React에서 Context는 컴포넌트 간 데이터를 전달하기 위한 새로운 방법이다. 기존에는 부모-자식 관계를 통해 props를 통해 데이터를 전달해야 했지만, 컴포넌트 계층이 깊어질수록 코드가 복잡해지는 단점이 있었다. Context를 사용하면 중간에 있는 컴포넌트들에게 데이터를 전달하지 않고도, 특정 컴포넌트가 직접 데이터를 사용할 수 있다.
function App() {
return <Parent data="Hello" />;
}
function Parent(props) {
return <Child data={props.data} />;
}
function Child(props) {
return <div>{props.data}</div>;
}
import React, { createContext, useContext } from "react";
const DataContext = createContext();
function App() {
return (
<DataContext.Provider value="Hello">
<Child />
</DataContext.Provider>
);
}
function Child() {
const data = useContext(DataContext);
return <div>{data}</div>;
}
Context는 아래와 같은 경우에 사용하기 적합하다.
createContext로 Context를 생성한다.
const ThemeContext = React.createContext("light"); // 기본값 설정
Provider를 통해 데이터를 제공하고, 하위 컴포넌트에서 접근할 수 있게 만든다.
function App() {
return (
<ThemeContext.Provider value="dark">
<Toolbar />
</ThemeContext.Provider>
);
}
function Toolbar() {
return <ThemeButton />;
}
하위 컴포넌트에서 useContext 훅을 사용하여 데이터를 읽는다.
function ThemeButton() {
const theme = React.useContext(ThemeContext);
return <button theme={theme}>테마 버튼</button>;
}