Context는 props 전달을 줄이지만, value 참조가 바뀌면
해당 Context를 읽는 consumer가 다시 렌더된다. 공유할 값, Provider
위치, 참조 안정성을 함께 설계해야 한다.
useMemo,
useCallback으로 고정한다.
{ theme, setTheme }가 매 렌더 새 참조가
된다.
| 값 유형 | 적절한 위치 | Context 후보 여부 | 점검 기준 |
|---|---|---|---|
| 자주 변경 | 입력값, hover, 임시 form 상태는 local state에 둔다. | 낮음 | 매 입력마다 넓은 consumer가 다시 렌더되는지 본다. |
| 공유 설정 | theme, locale, auth session처럼 읽는 곳이 넓다. | 높음 | 변경 빈도와 consumer 수가 균형을 이루는지 본다. |
| 함수 참조 | dispatch, command handler는 참조 안정성이 중요하다. | 조건부 | consumer 렌더를 줄이려면 handler 참조를 고정한다. |
| 서버 상태 | cache, fetch 결과, mutation 상태는 전용 store나 query cache에 둔다. | 낮음 | 동기화, 재검증, 에러 상태가 Context 밖에서 관리되는지 본다. |
{ user, setUser } 객체가 매번 새 참조면 consumer가
모두 반응한다.
Provider가 실제 consumer가 있는 가장 가까운 공통 부모에 있는지, value 객체와 callback 참조가 필요할 때만 바뀌는지, Provider 누락과 render count 증가를 테스트나 로그로 볼 수 있는지 확인한다.