Redux에 전유물로 보였던 '전역 상태 관리' 하지만, 엄격한 Flux 패턴을 따르며, 무거운 써드 파트 라이브러리인 Redux에 대응하여 보다 가볍고 유연한 Mobx, Recoil과 같은 다른 라이브러리들이 나타나고 발전했습니다.
React 진영도 Context를 통해 기능을 제공하고 있었으나, 기존 Legacy Context 는 사용해보니 여러 문제가 있었습니다. 현재는 개선된 React Context를 제공하고 있으며 이번 포스팅에서 사용법을 파헤쳐 보겠습니다.
export const ThemeContext = React.createContext(defaultValue);
import ThemeContext from './theme-context';
<ThemeContext.Provider value={/* value */}>
{/* ...Components */}
</ThemeContext.Provider>
function Content() {
return (
<ThemeContext.Consumer>
{theme => (
<UserContext.Consumer>
{user => (
<ProfilePage user={user} theme={theme} />
)}
</UserContext.Consumer>
)}
</ThemeContext.Consumer>
);
}
const MyContext = React.createContext(/* some value */);
MyContext.displayName = 'MyDisplayName';
<MyContext.Provider> // "MyDisplayName.Provider" in DevTools
<MyContext.Consumer> // "MyDisplayName.Consumer" in DevTools