본문 바로가기
FrontEnd/TypeScript

Typescript와 함께 알아보는 Context API 사용방법

by Fathory 2023. 6. 23.
title

소개

Context API는 React 애플리케이션에서 상태를 전역적으로 관리하기 위한 도구입니다. 이 기능은 컴포넌트 간에 데이터를 공유하고 전달하는 데 사용됩니다. 이번 블로그 포스트에서는 Typescript와 함께 Context API를 사용하는 방법에 대해 자세히 알아보겠습니다.

본문

1. Context API란?

Context API는 React의 공식 상태 관리 도구로, 컴포넌트 트리 전체에서 데이터를 공유할 수 있게 해줍니다. 이를 통해 중첩된 컴포넌트 간에 데이터를 전달하는 것이 간편해집니다.

2. Context API의 주요 개념

Context API를 사용하기 위해 알아야 할 주요 개념은 다음과 같습니다:

  • Context: 데이터를 공유하기 위한 컨테이너 역할을 하는 객체입니다.
  • Provider: Context의 값을 설정하는 컴포넌트입니다.
  • Consumer: Context의 값을 사용하는 컴포넌트입니다.

3. Context API 사용 방법

Context API를 사용하는 방법은 다음과 같습니다:

import React, { createContext, useContext } from 'react';

// Context 생성
const MyContext = createContext<string>('default value');

// Provider 컴포넌트 생성
const MyProvider: React.FC = ({ children }) => {
  const value = 'Hello, Context!';
  return <MyContext.Provider value={value}>{children}</MyContext.Provider>;
};

// Consumer 컴포넌트 생성
const MyConsumer: React.FC = () => {
  const value = useContext(MyContext);
  return <div>{value}</div>;
};

// App 컴포넌트에서 Provider와 Consumer 사용
const App: React.FC = () => {
  return (
    <MyProvider>
      <MyConsumer />
    </MyProvider>
  );
};

export default App;

4. Typescript와 함께 사용하기

Typescript를 사용하면 Context API를 더욱 안전하게 사용할 수 있습니다. 다음은 Typescript와 함께 Context API를 사용하는 예시입니다:

import React, { createContext, useContext } from 'react';

interface MyContextType {
  value: string;
  setValue: (value: string) => void;
}

const MyContext = createContext<MyContextType | null>(null);

const MyProvider: React.FC = ({ children }) => {
  const [value, setValue] = React.useState('default value');

  return (
    <MyContext.Provider value={{ value, setValue }}>
      {children}
    </MyContext.Provider>
  );
};

const MyConsumer: React.FC = () => {
  const context = useContext(MyContext);

  if (!context) {
    throw new Error('MyConsumer must be used within a MyProvider');
  }

  const { value, setValue } = context;

  return (
    <div>
      <span>Value: {value}</span>
      <button onClick={() => setValue('New Value')}>Update Value</button>
    </div>
  );
};

const App: React.FC = () => {
  return (
    <MyProvider>
      <MyConsumer />
    </MyProvider>
  );
};

export default App;

5. Context API 사용 시 주의사항

Context API를 사용할 때 주의해야 할 몇 가지 사항이 있습니다:

  • Provider 컴포넌트는 가능한 한 최상위 컴포넌트에 위치시키는 것이 좋습니다.
  • Context의 값이 변경될 때마다 하위 컴포넌트들이 불필요하게 리렌더링될 수 있으므로, 성능에 영향을 줄 수 있습니다.
  • Context의 값은 객체나 배열과 같은 참조 타입이 아니라면, 불필요한 리렌더링을 피하기 위해 항상 새로운 값을 생성해야 합니다.

결론

이번 포스트에서는 Typescript와 함께 Context API를 사용하는 방법에 대해 알아보았습니다. Context API는 React 애플리케이션에서 상태를 전역적으로 관리하기 위한 강력한 도구이며, Typescript와 함께 사용하면 더욱 안전하고 효율적으로 상태를 관리할 수 있습니다.

반응형