Context API란?
사용법(정적 Context)
createContext함수를 사용하여 ColorContext 파일 생성
createContext의 들어간 {color:black}은 기본상태를 의미
사용하고싶은 컴포넌트에가서 ColorContext를 import한다.
그리고 return부분을 ColorContext.Consumer로 감싼 뒤 중괄호를 열어서 그안에 함수를 넣어사용한다.
value는 ColorContext의 {color:black}을 의미한다. (value로 안쓰고 원하는대로 써도됨)
value의 값을 사용하기위해 value.color로 써준것이다.
위에 사용된 중괄호 안에 함수를 넣어서 사용하는 방법을 Function as child, Render Props라고 한다.
Ex) ColorBox라는 컴포넌트를 children을 받아 사용하게 한다.
ColorBox의 children으로 JSX나 문자열이 아닌 함수를 전달한다.
Provider를 사용하여 ColorContext의 기본 상태 값을 변경하여 사용할 수 있다.
위에 코드를 설명하자면 Route안에 있는 ColorBox는 ColorContext의 값을 Consumer로 사용하게 놔두고
App.js에서 Provider로 감싸고 value를 이용해 ColorContext의 상태값으로 지정한 {color:black}을 {color:red}로 바꿔준 것이다.
Provider를 이용할때는 꼭 value를 써줘야한다.
위의 방법들은 기본값으로 지정된 고정값을 이용하는 방법들이다. 이제 동적 Context를 사용하는 방법을 알아보자.
사용법(동적 Context)
const {Consumer:ColorConsumer} = ColorContext
는const Colorsumer = ColorContext.Consumer
와 같다.)결론
1. createContext(), Consumer를 사용하여 정적인 기본값만 사용해도되고
2. Context.Provider(feat. value), Context.Consumer를 사용해서 Render props형태로 사용해도 되고
3. Context.Provider(feat. value), useContext()를 사용해도 된다!
확실히 useContext를 사용하는게 조금 더 편한거같다.