Front-end/React

useContext

hyebin Lee 2022. 3. 14. 15:38

useContext는 context로 공유한 데이터를 쉽게 받아올 수 있게 도와준다.

하지만 컴포넌트 사용성의 재사용이 어려워질 수 있기 때문에 필요할 때만 사용하는것이 좋다.

prop drilling을 피하기 위한 목적이라면 component composition컴퍼넌트 합성을 먼저 고려해보자.

그렇다면 리덕스랑 Context?

리덕스는 Context와 비교해서 훨신 더 풍부하고 많은 기능을 제공하기때문에 재사용성 측면 보다는 사용하고자 하는 목적에 대해 더 생각하고 무엇을 사용할지 결정하는게 더 맞는 표현 같아요

Context는 리덕스보다 가볍기 때문에 대부분에 경우 작은 프로젝트들에게 더 잘 어울린다고도 할 수 있겠지만 목적에따라 늘 그렇지 않을수도 있답니다!

null이 아닐 때,

context/ ThemeContext.js

import { createContext } from "react";

export const ThemeContext = createContext({ color: "green" });

app.js

import { ThemeContext } from "./context/ThemeContext";

function App() {

  return (
    // <ThemeContext.Provider value={{}}>
      <div className="App">
				...
      </div>
    // </ThemeContext.Provider>
  );
}

export default App;

null 일때

import { createContext } from "react";

export const ThemeContext = createContext(null);
import { ThemeContext } from "./context/ThemeContext";

function App() {

  return (
    <ThemeContext.Provider value={{{ color: "green" }}}>
      <div className="App">
				...
      </div>
    </ThemeContext.Provider>
  );
}

export default App;