Skip to content

createContext

React Context를 정의할 때 반복되는 코드를 줄여주는 헬퍼 함수입니다.

Interface

ts
function createContext<ContextValue extends object | null>(
  rootComponentName: string,
  defaultContext?: ContextValue,
): [
  Provider: (
    props: ContextValue & { children: React.ReactNode },
  ) => JSX.Element,
  useContext: (consumerName: string) => ContextValue,
];

Parameters

이름타입설명필수
rootComponentNamestring컨텍스트를 제공하는 컴포넌트의 이름O
defaultContextContextValue컨텍스트의 기본값X

Return

[Provider, useContext] 튜플을 반환합니다.

이름타입설명
Provider(props: ContextValue & { children: React.ReactNode }) => JSX.Element컨텍스트를 제공하는 컴포넌트
useContext(consumerName: string) => ContextValue컨텍스트를 사용하는 훅

Usage

tsx
import { createContext } from '@teamsparta/react';

const [ThemeProvider, useTheme] = createContext<{ theme: string }>('Theme');

function ThemeToggle() {
  const { theme } = useTheme('ThemeToggle');
  return <div>현재 테마: {theme}</div>;
}

function App() {
  return (
    <ThemeProvider theme="dark">
      <ThemeToggle />
    </ThemeProvider>
  );
}

Example

기본 사용법

tsx
const [UserProvider, useUser] = createContext<{ name: string; age: number }>(
  'User',
);

function UserProfile() {
  const { name, age } = useUser('UserProfile');
  return (
    <div>
      <p>이름: {name}</p>
      <p>나이: {age}</p>
    </div>
  );
}

function App() {
  return (
    <UserProvider name="홍길동" age={25}>
      <UserProfile />
    </UserProvider>
  );
}