#App.js (부모 컴포넌트)
let [재고] = useState([10,11,12]) //재고 임시 데이터 10개, 11개, 12개
위의 state를 Detail(자식), TabContent(손자)에서 쓰려면(props말고) Context API사용
🎤 Context API를 쓰면 자식은 props없이 state 사용 가능import {useState, **createContext**} from "react";
let Context1 = createContext()
-> context를 하나 만들어줌
-> Context는 state 보관함
-> 즉, state 보관함 하나 만들어줌
<Route path="/detail/:id" element={
**<Context1.Provider>**
<Detail shoes={shoes}/>
**</Context1.Provider>**
} />
value={{state1, state2...}}
<Route path="/detail/:id" element={
<Context1.Provider **value ={{ 재고 }}** >
<Detail shoes={shoes}/> -> 여기 안의 모든 컴포넌트는 재고, shoes사용가능
</Context1.Provider>
} />
**export** let Context1 = createContext()
import **{ Context1 }** from './../App';
→ Detail.js를 routes 폴더에 넣어놨기 때문에 경로가 저렇게 됨
import { useEffect, useState, **useContext** } from "react";
let 변수 = useContext(Context명)
let **{꺼내고싶은state명}** = useContext(Context명) //object 자료형이므로
let **{재고, shoes}** = useContext(**Context1**)
#Detail.js > TabContent component(App.js의 손자)
let {재고} = useContext(Context1)
→ 이것만 써주면 맘대로 {재고} state 사용할 수 있음!!
ex. Detail컴포넌트가 재고라는 state를 쓰든말든 변경되면 {재고} 안쓰는 놈들도 무조건 재렌더링. 자식들도 모두 재렌더링됨.
→ 비효율적, 사이즈가 커지면 성능이슈발생
ex. 다른 페이지에서 import해서 재사용하려면 막 변수가 없다고 나올 수도 있고 그래..
🎤 그래서 Context API 잘 사용안하고 **외부 라이브러리(Redux)** 설치해서 ****사용함.