useContext :리액트 내부적으로 state를 관리할 수 있게 만드는 장치(prop chain필요 없음)
- store 폴더 생성
- store폴더 안에 -context.js(케밥케이스)작성
const AuthContext = React.createContext({
isLoggedIn:false
})
export default AuthContext
- app.js에 들어가서 해당되는 범위를 AuthContext.Provider로 묶어준다.
<AuthContext.Provider value={{isLoggedIn: isLoggedIn}}></AuthContext.Provider>
- 이 값에 접근하려면 리스닝을 해야한다. 이때 Context.Consumer(6번) 혹은 리액트 훅(useContext/ 7번 방법 )을 사용한다
- 데이터가 필요한 모든 것을 Context.Consumer 로 감싸준다. (Consumer는 함수인 자식을 가져야한다.)
<AuthContext.Consumer>
{(ctx)=>{
return (
<div>
해당 데이터에 접근할 수 있는 jsx코드
ctx.isLoggedIn
</div>
)}
</AuthContext.Consumer>
import {useContext} from "react"
const ctx = useContext(AuthContext)