#5StructuralEasy

Provider Pattern (Theme)

Provider Pattern

ThemeContext, ThemeProvider, useTheme를 구현해 prop drilling 없이 트리 전체에 테마를 공유하세요.

API

type Theme = 'light' | 'dark';

export function ThemeProvider({ children, initial }: { children: ReactNode; initial?: Theme }): JSX.Element;
export function useTheme(): { theme: Theme; toggle: () => void };

사용 예시

function Display() {
  const { theme, toggle } = useTheme();
  return <button onClick={toggle}>{theme}</button>;
}

<ThemeProvider>
  <Display />
</ThemeProvider>

학습 포인트

  • createContext + useContext로 데이터를 트리 어디서든 꺼내쓰기
  • useMemo로 context value 객체를 안정화 (선택)
  • 기본값은 'light', toggle()light ↔ dark 전환
Sandpack 로드 중…