개발/React 학습

Context API

RainyJune 2023. 4. 21. 15:33

부모 이상의 조상 component의 state를 사용하기 위해서는 조상으로부터 자식 component에게 계속해서 props를 전달해야하는 문제가 있음. 굉장히 번거롭기 때문에 state를 공유하는 기법을 별도로 제공함.


Context API (https://react.dev/reference/react#context-hooks)

react 자체적으로 제공하는 state 공유 hook.

 

사용법

공유하고자하는 최상위 component에서는 createContext를 호출하여 state를 context화 한다.

// App.js를 예제로 함

import { createContext } from 'react';

export let TestContext = createContext();

function App() {
  let [testState, setTestState] = useState('testValue');
  
  return (
    ...
    <TestContext.Provider value={ { testState } }>
      ... 공유 대상 component 호출
    </TestContext.Provider>
...

공유받은 자식 component에서 context의 state에 접근하는 방법은 아래와 같다.

// 자식 component에서
import { useContext } from 'react';
// Context 공유를 App.js에서 했기 때문에 App.js를 지정한 것임
import { TestContext } from './../App.js'; 

function ChildComponent (props) {
  let { testState } = useContext(TestContext);
  
  return <div>{ testState }</div>
}

하지만

Context API는 아래와 같은 문제로 인해 실제로는 잘 사용하지 않고, redux 등 외부 라이브러리를 통해 공유 state를 관리한다.

  • Context 대상 state가 변경되면 관련 모든 component가 re-rendering 된다. (성능 문제 야기)
  • 자식 component가 context를 참조하는 경우 부모 component와의 종속성이 강해져 재사용이 어려워진다.

'개발 > React 학습' 카테고리의 다른 글

Redux 적용  (0) 2023.04.25
Redux 설치  (0) 2023.04.21
Transition  (0) 2023.04.20
AJAX 활용  (0) 2023.04.18
Component의 Lifecycle  (0) 2023.03.26