상세 컨텐츠

본문 제목

[React] 리액트 훅( Context API )

REACT

by 혀누쓰0 2022. 7. 10. 11:02

본문

 

https://hyunu0504.github.io/blog10/

 

React App

 

hyunu0504.github.io

 

 

 

 

위 사이트는 props를 사용하지않고 Context API를 사용해서

 

아래 사진의 컴포넌트들로 이루어진 컴포넌트를 만들었다.

 

APP안에있는 state값을 false로 대입하고 

 

하위 컴포넌트에 버튼을 만들어서 버튼 클릭시 state값이 true로 바뀌도록 설정했다.

 

true일때는 background, color를 black, white로 설정했다

 

 

 

 

 

 

 

 

APP컴포넌트의 데이터를 Header, Nav, Section, Aside에 전달한다고 가정할때

 

 

 

 

 

 

 

props는 APP 컴포넌트에서 Main 컴포넌트로 전달하고 또 props로 전달해야 한다

 

 

 

 

 

 

 

 

 

상위 컴포넌트의 state를  하위 컴포넌트에서

props할때 읽기만 가능하고 수정은 불가능 하지만

 

context API는 하위 컴포넌트에서 상위 컴포넌트의 state를 수정할 수 있다,

 

Context API는 props처럼 상위 컴포넌트의 데이터를 사용할때

 

props로 단계적으로 전달하지 않고

 

useContext을 사용해서 필요한 컴포넌트에서만 사용할 수 있다.

 

이렇게 보면 props보다 좋지만 꼭 필요할때만 사용해야한다.

 

단점으로는 useContext를 사용하는 컴포넌트는 재활용이 어려워진다.

 

 

 

 

 

 

useContext 사용법

 

 

 

js파일을 하나 만들고 createContext를 import 하고

 

변수에 담아서 export 해준다 createContext안의 값은 초기값이다.

 

 

 

 

 

 

 

상위 컴포넌트에 방금 만든 변수를 import 한다.

 

 

 

 

 

 

 

 

데이터를 필요로하는 컴포넌트를  createContext로 만든 변수.Provider를 한다

value는 전달하고자 하는 데이터를 뜻한다.

 

위에서는 이렇게하면 ContextComponent 컴포넌트안에 있는 하위 컴포넌트들에서

 

필요하면 props를 거치지 않고 사용할 수 있다.

 

 

 

 

 

 

 

사용하고자하는 컴포넌트에서 useContext를 import하고

createContext로 export한 파일도 import 해준다.

 

 

 

 

 

 

 

 

Provider value에 담았던 데이터를 배열 그대로 변수에 담고 useContext( createContext변수명 )을 작성하면 이제 props없이 

 

상위 컴포넌트에서 전달한 value값을 사용할 수 있다.

 

'REACT' 카테고리의 다른 글

[React] 리액트 훅( useReducer )  (0) 2022.07.16
[React] 리액트 훅( useRef )  (0) 2022.07.12
[React] props  (0) 2022.07.09
[React] 리액트 훅( useEffect )  (0) 2022.07.06
[React] 리액트 훅( useState )  (0) 2022.07.05

관련글 더보기