Java Script & Type Script/TIL

3월 18일 TIL : context API, props전송없이 state를 공유하는 방법

쩰라 2023. 3. 18. 21:05
728x90

상태관리 라이브러리없이 props전송없이 state공유가 가능한 방법이 있다. 

그건 바로 context API

근데 잘 안쓰는 이유는, 


1. 성능이슈
2. 컴포넌트 재활용이 어렵다
로 인해 잘 이용은 안함. 

 

 

컴포넌트 바깥에

const Context1= createContext()

이렇게 만들어준다. 그리고

state를 공유할 부분에 

<Context1.Provider value={{ shoes }}>

<Detail/>

</Context1.Provider>

이렇게 감싸주고,


전송할 데이터를 value={{여기안에넣으면된다}}

그리고 Detail 컴포넌트로 임포트를 해주고,

import { Context1 } from "./App";
const {shoes}=useContext(Context1);

useContext를 이용해 보관함을 해체한다. 

 

그리고 이제 자유롭게 쓰면되는데,

 

아까 언급한 것 처럼 state 변경시 쓸데없는 컴포넌트까지 전부 재렌더링이 되고,

useContext() 를 쓰고 있는 컴포넌트는 나중에 다른 파일에서 재사용할 때 Context를 import 하는게 귀찮아질 수 있다. 

728x90