props를 전달 받아 데이터를 사용함function App(props){
return <Tollbar theme="dark"/>
}
function Toolbar(props){
return <div> <ThemedButton theme={props.theme}/></div>
}
function ToolbarButton(props){
return <Button theme={props.theme}/>
}
언제 써야할까?
로그인 여부, 로그인 정보, UI 테마, 현재 선택된 언어 등
const ThemeContext = React.createContext("light");
function App(props){
return(
<ThemeContext.Provider value="dark">
<Toolbar/>
</ThemeContext.Provider>
)
}
function Toolbar(props){
return <div> <ThemedButton/></div>
}
function ToolbarButton(props){
return (
<ThemeContext.Consumer>
{value => <Button theme={value}/>}
</ThemeContext.Consumer>
)
}
const MyContext = React.createContext(기본값);
<MyContext.Provider value={/* some value */}>
Provider value 주의 사항
Provider component가 재렌더링 될 때 마다
모든 하위 consumer component도 재렌더링 됨*state를 사용하면 불필요한 재렌더링을 맏을 수 있음
function App(props) {
const [value, setValue] = useState({something: 'something'});
return(
<MyContext.Provider value={value}>
<Toolbar/>
</MyContext.Provider>
)
}
<MyContext.Consumer>
{value => /* Context의 값에 따라서 component들을 렌더링 */}
</MyContext>
useContext
component에서 context를 사용할 때
useContext()를 사용하면 간편함function MyComponent(props){ const value = useContext(MyContext); return( ... )
displayName으로 설정한 값과 함께 표시