DAY : 15
ReactDay : 5
: 다음과 같은 구조에서 변수 A가 props로 모두 연결되어 있다면,
'울트라'의 A 업데이트 시 관련 함수 및 변수들을 모두 props로 추가 연결해야 한다. 파일의 수가 고작 4개라면 괜찮을지도 모르지만 40개 400개의 파일이라 상상한다면 끔찍할 테다.
이때, useContext를 사용하면 된다.
useContext는 기존 props, 구조분해와 반대로 App에서 변수를 지정한다.
CODE
메인파일(App.jsx)
1. react에서 createContext를 import
2. 상수 AppContext 선언 후 export하기 : component파일에서 사용하기 위함
3. useState이용해서 변수, 함수 지정
4. provider를 사용 내용감싸기 : <AppContext.Provider>
5. 가져갈 변수 value값으로 적어주기
import Component1,2... from 파일경로; // 내용 들고오기
import { useState } from "react";
import { createContext } from "react";
export const AppContext = createContext();
function App() {
const [gift, setGift] = useState(0);
return (
<AppContext.Provider value={{ gift, setGift }}>
<div>
<Component1 />
<Component2 />
</div>
</AppContext.Provider>
);
}
export default App;
Component 파일
1. 변수가 필요한 파일에서 useContext, AppContext를 import
2. 필요한 변수 들고오기
3. return내에서 {}로 사용
import { useContext } from "react";
import { AppContext } from "../App";
const ChildFriend = () => {
const { 변수 } = useContext(AppContext);
return (
<div>
<div>내용 : </div>
{변수}
</div>
);
};
export default ChildFriend;
class형
import { Component } from "react"; 사용한다.함수형(Functional)