react
React Context API.
createContext, Provider, prop drilling 해결, 성능, 대안 패턴
Context는 props 없이 트리 깊숙이 데이터를 전달하는 React 내장 API입니다.
📘 기본 패턴
const ThemeContext = createContext<'light' | 'dark'>('light');
function App() {
return (
<ThemeContext.Provider value="dark">
<Page />
</ThemeContext.Provider>
);
}
function Page() {
const theme = useContext(ThemeContext);
}
✅ 적합한 데이터
- theme, locale, auth session
- 자주 안 바뀌는 전역 설정
- prop drilling이 깊지만 updates가 드문 경우
⚡ 성능
- Provider value 변경 → 해당 context 구독 모든 consumer 리렌더
- 해결: context 분리 (state vs dispatch), memo, selector library (Zustand, Jotai)
🔀 대안
| 도구 | 특징 |
|---|---|
| Context | 내장, 단순, frequent update에 약함 |
| Zustand/Jotai | atomic, selective subscribe |
| Redux | 큰 앱, middleware, devtools |
| URL state | shareable, bookmark |
🔗 참고 자료
- Passing Data Deeply with Context — Context로 prop drilling을 줄이는 방법을 설명한다.
- useContext — Context 값을 읽는 Hook이다.
- createContext — Context 객체를 만드는 API다.
