React 상태 관리 Context API에 대해 알아보겠습니다.
state
에 넣어서 관리 (Props로 전달)value
값을 F 컴포넌트와 J 컴포넌트에 전달하려면 여러 컴포넌트를 거쳐야 함 App -> A -> B-> F
, J의 경우 App -> H-> J
의 흐름App -> A -> B-> E -> G
와 같이 복잡… const [value, setValue] = useState('ppby');
const onSetValue = useCallback(value => setValue(value),[])
Context API
를 사용하면 Context
를 만들어 단 한번에 원하는 값을 받아와서 사용ColorContext
안에 들어 있는 Consumer
라는 컴포넌트를 통해 색상을 조회 (ColorContex
는 createContext
를 통해 만든다.)Consumer
사이에 종괄호를 열어서 그 안에 함수를 넣어 줌) 이러한 패턴을 Function as a child, 혹은 Render Props 라고 한다.Provider
를 사용하면 Context
의 value
를 변경할 수 있다.value
를 명시해 줘야 함Context
의 value
에는 무조건 상태 값만 있어야 하는 것은 아님state
업데이트 함수는 actions
로 묶어서 Provider
의 value
에 전달state
와 actions
객체를 분리해 두면 다른 컴포넌트에서 Context
값을 사용할 때 편함)cteateContext
의 기본 값은 실제 Provider
의 value
에 넣는 객체의 형태와 일치시켜 주는 것이 좋다.Context
내부 값 파악하기 쉽고, 실수로 Provider
를 사용하지 않았을 때 기본 값이 들어가 오류가 발생하지 않는다.children
에 함수를 전달하는 Render Props 패턴이 불편하다면, useContext
Hook 사용 추천Context
에 넣어 둔 함수를 호출할 수 있다.