react useContext

Posted by : on

Category : Frontend2

전역으로 데이터를 관리하고 싶을떄

  • 컴포넌트는 ui 단위이며 재사용을 위해 외부에서 데이터를 전달 받기위해서는 Props를 사용하는데,
  • 너무 많아지면 가독성이 떨어지게 된다.

이미지 이미지 이미지 이미지 이미지

사용하기

createContext는 보통 컴포넌트 밖에서 한다.

렌더링할때마다 새로운 컨텍스트를 다시 만들 필요가 없기 때문이다.

이미지

분리하기

이미지 이미지

부모

//먼저 사용하려면 context로 값을 내려줄 부모 컴포넌트에서 이렇게 선언해준다.
import { createContext } from 'react'

//부모 컴포넌트에 context 객체를 선언해준다.
export const Context1 = createContext();
export const Context2 = createContext();

//보내줄 context객체를 jsx로 감싸주면 하위 컴포넌트들은 감싼 context 객체를 사용 할 수 있다. context도 객체이기 때문에 바로 넣지는 못하고 Context1.Provider에 value에 넣어준다.
return (
  <div className='App'>
   <Header />
   <Context1.Provider value={data1}>
    <Context2.Provider value=}>
     <Editor />
     <List />
    </Context2.Provider>
   </Context1.Provider>
  </div>

 )

자식

//useContext를 선언해준다.
import { useContext } from "react";

//data1 처럼 바로 값을 보내준거면 아래와같이 할당
const data1 = useContext(context1);
//data2처럼 객체로 할당 했으면 객체구조할당을 사용하여 할당해준다.
const { dataitm1, dataitm2, dataitm3 } = useContext(context2);