React / / 2024. 11. 11. 10:45

React의 Context API

React의 Context API는 컴포넌트 계층 구조를 통해 데이터를 전역적으로 관리하고 쉽게 전달할 수 있도록 도와주는 기능입니다. 일반적으로 React에서 데이터를 자식 컴포넌트에 전달할 때는 props를 사용하지만, 여러 단계에 걸쳐 데이터를 전달해야 하는 경우 props drilling 문제가 발생할 수 있습니다. Context API는 이러한 불편함을 해결하여 복잡한 컴포넌트 계층 구조에서도 데이터를 쉽게 전달할 수 있도록 해줍니다.

 

Context API 주요 개념

 

1. Context 생성

React.createContext() 함수를 사용하여 Context 객체를 생성합니다. 예를 들어, UserContext라는 Context를 생성하려면 다음과 같이 작성합니다:

const UserContext = React.createContext();

 

2. Provider

Provider는 Context에서 데이터를 공급하는 역할을 하며, Context의 최상위 컴포넌트가 됩니다. Provider 컴포넌트는 value 속성을 통해 하위 컴포넌트로 전달될 값을 설정합니다.

예를 들어, UserContextProvider는 다음과 같이 사용할 수 있습니다:

<UserContext.Provider value={user}>
  <App />
</UserContext.Provider>

 

이 경우, UserContext.Provider에 설정된 value 값은 하위 컴포넌트에서 접근할 수 있습니다.

 

3. Consumer

Consumer는 Context의 값을 소비하는 역할을 합니다. Consumer 컴포넌트를 통해 Context에 접근할 수 있으며, 함수형 컴포넌트에서는 useContext 훅을 주로 사용합니다.

예를 들어 UserContext의 값을 사용하려면:

const user = useContext(UserContext);

 

이렇게 하면 user 객체를 Providervalue 값으로 바로 가져올 수 있습니다.

 

4. useContext 훅

useContext 훅은 함수형 컴포넌트에서 Context에 더 쉽게 접근할 수 있도록 도와줍니다. Consumer를 사용하지 않고도 Context의 값을 읽을 수 있기 때문에 코드가 간결해집니다.

 

Context API 사용 예시

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

// Context 생성
const ThemeContext = createContext();

function App() {
  const theme = 'dark';

  return (
    <ThemeContext.Provider value={theme}>
      <Toolbar />
    </ThemeContext.Provider>
  );
}

function Toolbar() {
  return (
    <div>
      <ThemedButton />
    </div>
  );
}

function ThemedButton() {
  const theme = useContext(ThemeContext);
  return <button style={{ background: theme === 'dark' ? '#333' : '#fff' }}>Themed Button</button>;
}

 

위 예제에서 ThemeContext.Provider를 통해 theme 값을 ThemedButton까지 전달할 수 있습니다. 이 과정에서 props를 사용하지 않고 Context로 직접 전달하기 때문에 계층이 깊어져도 props drilling 문제를 피할 수 있습니다.

 

Context API의 장점

 

데이터 전역 관리: 전역 데이터, 특히 사용자 정보, 테마, 언어 설정 등을 여러 컴포넌트에서 일관되게 사용할 수 있습니다.

props drilling 문제 해결: 여러 컴포넌트 계층을 거칠 필요 없이 필요한 데이터에 직접 접근할 수 있습니다.

코드의 간결화: useContext 훅을 통해 코드가 간결해지고 관리하기 쉬워집니다.

 

Context API의 주의사항

 

과도한 사용 피하기: 모든 상태를 Context로 관리하면 컴포넌트가 자주 리렌더링될 수 있어 성능이 저하될 수 있습니다. 이 경우 Redux와 같은 상태 관리 라이브러리를 사용하여 효율적으로 상태를 관리하는 것이 좋습니다.

컨텍스트 분리: 여러 가지 데이터를 Context로 관리할 때는 주제별로 Context를 분리하여 사용하는 것이 성능 및 유지 관리 측면에서 좋습니다.

 

React의 Context API는 간단한 전역 상태 관리에 매우 유용하며, props 전달 문제를 효과적으로 해결해주는 좋은 도구입니다.

'React' 카테고리의 다른 글

React의 Hook  (2) 2024.11.11
Cross-Platform  (0) 2024.11.11
React의 Props  (1) 2024.11.11
React의 이벤트 핸들링  (0) 2024.11.11
React의 컴포넌트와 JSX  (0) 2024.11.11
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유