useContext

임준형·2023년 4월 14일

React

목록 보기
5/8

하나의 상태를 공유해야 할 때 이를 부모 컴포넌트에서 관리하고, 상태를 Props로 자식 컴포넌트에게 넘겨줌

Context

context API를 사용하기 위해서는 Provider , Consumer , createContext 이렇게 세가지 개념을 알면 됨

  • createContext : context 객체를 생성
  • Provider : 생성한 context를 하위 컴포넌트에게 전달하는 역할
  • Consumer : context의 변화를 감시하는 컴포넌트
import React, { createContext } from "react";
import Children from "./Children";

// AppContext 객체를 생성한다.
export const AppContext = createContext();

const App = () => {
  const user = {
    name: "김채원",
    job: "가수"
  };

  return (
    <>
      <AppContext.Provider value={user}>
        <div>
          <Children />
        </div>
      </AppContext.Provider>
    </>
  );
};

export default App;
import React from "react";
import { AppContext } from "./App";

const Children = () => {
  return (
      <AppContext.Consumer>
        {(user) => (
          <>
            <h3>AppContext에 존재하는 값의 name은 {user.name}입니다.</h3>
            <h3>AppContext에 존재하는 값의 job은 {user.job}입니다.</h3>
          </>
        )}
      </AppContext.Consumer>
  );
};

export default Children;

useContext

import React, { useContext } from "react";
import { AppContext } from "./App";

const Children = () => {
  // useContext를 이용해서 따로 불러온다.
  const user = useContext(AppContext);
  return (
    <>
      <h3>AppContext에 존재하는 값의 name은 {user.name}입니다.</h3>
      <h3>AppContext에 존재하는 값의 job은 {user.job}입니다.</h3>
    </>
  );
};

export default Children;

useContext 를 사용하면 기존의 Context 사용 방식보다 더 쉽고 간단하게 Context를 사용이 가능하고, 앞서 다뤘던 useState, useEffect 와 조합해서 사용하기 쉬움

0개의 댓글