기록/TIL
[TIL] Context
루미미
2024. 11. 15. 23:24
Context
Context란?
컴포넌트의 계층 구조가 두 단계 이상으로 깊어지게 된다면 다이렉트로 전달할 수가 없고 중간 컴포넌트를 거쳐서 전달해야 한다. 이러한 과정을 Props Drilling이라고 한다.
Props Drilling을 해결하기 위해 리액트에서는 컨텍스트를 제공한다.
컨텍스트는 리액트 컴포넌트간에 어떠한 값을 공유할 수 있게 해주는 기능이다. 데이터를 보관하는 일종의 데이터 보관소 역할을 한다.
컨텍스트를 생성한 다음에 전달할 데이터를 Context에 보관해놓으면 props를 이용하지 않고 다이렉트로 필요한 데이터를 전달해 줄 수 있다.
context 사용법
const 컨텍스트 = createContext();
react 패키지가 제공하는 createContext 메서드로 컴포넌트 바깥에서 컨텍스트 객체를 생성한다.
컨텍스트 객체는 Provider 컴포넌트를 제공하는데 해당 컨텍스트가 공급할 데이터를 설정하거나 데이터를 공급 받을 컴포넌트를 설정하기 위해서 사용한다.
function App() {
const [theme, setTheme] = useState('light');
return (
<ThemeContext.Provider value={theme}>
<Page />
</ThemeContext.Provider>
);
}
Provider 컴포넌트를 최상위 컴포넌트로 설정하고 value 속성에 전달할 데이터를 설정하면 된다.
컨텍스트의 데이터를 꺼내올 때는 전달받을 컴포넌트에서 useContext 훅의 인수로 컨텍스트를 넣어서 호출하면 된다.
const value = useContext(컨텍스트);