#31StructuralEasy

Provider Pattern (ThemeProvider + useTheme)

Provider Pattern

ThemeProvideruseTheme() 커스텀 훅을 구현해 prop drilling 없이 테마를 공유하세요.

API

type Theme = 'light' | 'dark';

export function ThemeProvider(props: {
  children: React.ReactNode;
  defaultTheme?: Theme; // 기본 'light'
}): JSX.Element;

export function useTheme(): {
  theme: Theme;
  toggle: () => void;
  setTheme: (next: Theme) => void;
};

동작

  • useTheme() 은 가장 가까운 ThemeProvider 의 값을 반환.
  • toggle()light ↔ dark 전환.
  • setTheme(next) 로 직접 값 지정 가능.
  • ThemeProvider 바깥에서 useTheme() 호출 시 에러를 throw.

학습 포인트

  • createContext + useContext 로 트리 전역 데이터 공유
  • 커스텀 훅으로 컨텍스트 소비 로직 캡슐화
  • 잘못된 사용을 컴파일/런타임에서 강하게 차단
Sandpack 로드 중…