context

김예린·2024년 2월 4일
0

context로 전역상태관리하는 법

context폴더하나 만들고, 관리하고자하는 useState를 context로 정의한다.
LetterContext.jsx라는 파일을 만든다(편지 데이터를 관리할 것 임)

import { createContext, useState } from "react";
import fakeData from "fakeData.json";

export const LetterContext = createContext(null);

const LetterContextProvider = ({ children }) => {
  const [data, setData] = useState(fakeData);
  return (
    <LetterContext.Provider value={{ data, setData }}>
      {children}
    </LetterContext.Provider>
  );
};
export default LetterContextProvider;

export const LetterContext = createContext(null);
LetterContext라는 이름의 context를 쓰겠다는 의미. 그냥 정의만 해놈
Provider함수는 LetterContext.Provider 컴포넌트를 생성하고, 해당 컴포넌트의 하위에 있는 모든 자식 컴포넌트에 데이터를 제공.(LetterContextProvider로 App(우리만든것이 다 담겨진 컴포넌트)를 감싸서 App을 하위컴포넌트로 할 것임)
함수는 props로 children을 받아와서 해당 컴포넌트를 하위 컨텍스트로 포함시킵니다.

LetterContextProvider 하위에 있는 children들은 data,setData를 사용할 수 있게 됌

사용하고 싶은 곳에서 props를 내려받는 것이아닌,
바로!!!!!사용가능

const { data, setData } = useContext(LetterContext);

이렇게만 정의하면 굳이 어딘가에서 props를 전달받지 않고도 데이터를 사용할 수 있다.

index.jsx에서

const root = ReactDOM.createRoot(document.getElementById("root"));
root.render(
  <LetterContextProvider>
    <App />
    <GlobalStyle />
  </LetterContextProvider>
);

요런식으로 app의 상위에 감싸면, app을 children으로 사용할 수 있다!!

profile
아자아자

0개의 댓글