티스토리 뷰

활동/교육과정 중 기록

200207 React

Stolen Moments 2020. 2. 7. 17:26

React




Context API


import React, { Fragment } from 'react';

const UserContext = React.createContext('unknown')
class App extends React.Component {
  render() {
    return (
        <div>
          <UserContext.Provider value="NickName">
            <div>상단 메뉴</div>
            <Profile />
            <div>하단 메뉴</div>
          </UserContext.Provider>
        </div>
    )
  }
}

function Profile() {
  return (
    <div>
      <Greeting />
    </div>
  )
}


function Greeting() {
  return (
    <UserContext.Consumer>
      { username => <p>{`${username}님 안녕하세요`}</p>}
    </UserContext.Consumer>
  )
}

export default App;





Provider, Consumer



import React, { Fragment } from 'react';

const ThemeContext = React.createContext('power')
const UserContext = React.createContext('unknown')
class App extends React.Component {
  state = { username: '' };
  onChange = e => {
    const username = e.target.value
    this.setState({ username })
  }

  render() {
    const { username } = this.state
    return (
      <div>
        <ThemeContext.Provider value="light">
          <UserContext.Provider value={username}>
            <div>상단 메뉴</div>
            <Profile />
            <div>하단 메뉴</div>
            <input type='text' value={username} onChange={this.onChange}></input>
          </UserContext.Provider>
        </ThemeContext.Provider>
      </div>
    )
  }
}

class Profile extends React.Component {

  shouldComponentUpdate() {
    return true;
  }
  render() {
    console.log("홍길동")
    return (
      <div>
        <Greeting />
      </div>
    )
  }
}


function Greeting() {
  return (
    <ThemeContext.Consumer value="light">
      {theme => (
        <UserContext.Consumer>
          {username => <p style={{color: theme === 'dark' ? 'gray' : 'green'}}>{`${username}님 안녕하세요`}</p>}
        </UserContext.Consumer>
      )}
    </ThemeContext.Consumer>
  )
}

export default App;


반응형

'활동 > 교육과정 중 기록' 카테고리의 다른 글

200314 Spring Boot  (0) 2020.03.14
200211 React  (0) 2020.02.11
200206 React  (0) 2020.02.06
200205 React, JavaScript  (0) 2020.02.05
200204 React  (0) 2020.02.04
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함