[React] Context API
Context API란?
- Context API는 React version 16부터 사용 가능한 리액트의 내장 API
- 앱에서 컴포넌트에게 props를 사용하지 않고 필요한 데이터(state)를 쉽게 공유할 수 있게 해준다. 따라서 앱의 모든 컴포넌트에서 사용할 수 있는 데이터(state)를 전달할 때 유용
언제 사용할까?
- Context API를 통해 전달하는 데이터 종류
- 테마 데이터
- 사용자 데이터
- 언어 혹은 지역 데이터
- Context API는 자주 업데이트할 필요 없는 데이터에 사용
- Context API에서 State값을 변경하면, Provider로 감싼 모든 자식 컴포넌트들이 리렌더링 되므로, 전역 상태 관리를 위한 도구가 아닌, 데이터를 쉽게 전달하고 공유하기 위한 목적으로 사용하는 것이 적합
- 때문에 Context는 리액트에서 컴포넌트를 위한 전역변수의 개념으로 생각하자
사용 방법
context api를 사용하기 위한 네 단계는 다음과 같다.
- createContext 메서드를 사용해 context를 생성
- 생성된 context를 가지고 context Provider로 컴포넌트 트리를 감싼다.
- value prop을 사용해 context Provider에 원하는 값을 입력
- Provider의 value에 담은 데이터를 전달할 때는 2가지 방식으로 전달 가능.Consumer 혹은 useContext라는 훅을 이용하는것
1. 기본 예제 코드 - Consumer를 사용하는 방법
import { createContext } from ‘react’;
export const themeContext = createContext(전달할 데이터의 초기값);
export default function App() {
return (
<themeContext.Provider value={전달할 데이터}>
<Theme />
</themeContext.Provider>
)
}
function Theme() {
return (
<themeContext.Consumer>
{value => <div>{value}</div>}
</themeContext.Consumer>
)
}
2. 기본 예제 코드 - useContext Hook을 사용하는 방법
import { createContext, useContext } from ‘react’;
export const themeContext = createContext(전달할 데이터의 초기값);
export default function App() {
return (
<themeContext.Provider value={전달 데이터}>
<Theme />
</themeContext.Provider>
)
}
function Theme() {
const theme = useContext(themeContext);
return <div>{theme}</div> // Provider에서 value로 전달한 데이터 출력
}