React

230629 useContext( )

hyerin1201 2023. 6. 29. 17:31

props :  루트돔노드(App.tsx)에서 데이터를 자식 컴포넌트에전달 -> 자신이 후손컴포넌트에 전달

useContext:를 사용하면 데이터를 후손컴포넌트까지에도 다 전달가능.

 

 

데이터를 보내주려고 하는 (전송 컴포넌트에서) Create Context를 선언한다.

(App.tsx)

const ThemeContext = React.createContext("light"); //인자값으로 기본값을 보낼 수 있다.

그리고 해당변수가 객체가 되어 랜더링 부분에서 

데이터를 받을 컴포넌트를 감싼다.*value 값은 기본값이아니라 전달하고자 하는 값이 있다면 value 값을 지정해줄 수 있다.

const App = (props: any) => {
  return (
    <div>
      <ThemeContext.Provider value="dark">
        <Toolbar />
      </ThemeContext.Provider>
    </div>
  );
};

 

데이터를 받는 입장의 컴포넌트에서 

역시 선언하고, 랜더링부분에서 데이터를 출력할 부분을 감싼다.

(ThemeButton.tsx)

import React from "react";
const ThemeContext = React.createContext("light");
//받아온 값을 사용 -> consumer
const ThemeButton = (props: any) => {
  return (
    <div>
      <ThemeContext.Consumer>
        {(value) => <div>{value}</div>}
      </ThemeContext.Consumer>
    </div>
  );
};

export default ThemeButton;