React · Shared State

상태 공유가 어려워지는 지점

상태 공유 문제는 값이 많아서 생기기보다, 어느 컴포넌트가 원본을 소유하고 어느 컴포넌트가 변경을 요청하는지 불분명할 때 커진다.

01

변경 주체

값을 바꿀 수 있는 이벤트가 어느 화면에서 발생하는지 표시한다.

02

공유 범위

같은 값을 읽는 컴포넌트들의 가장 가까운 공통 부모를 찾는다.

03

요청 통로

자식은 setter를 직접 남발하기보다 의미 있는 이벤트 콜백을 호출한다.

04

확장 판단

여러 라우트와 멀리 떨어진 영역에서 필요할 때 context나 store를 검토한다.

Local
혼자 쓰는 상태 input focus, modal open처럼 한 컴포넌트 안에서 끝남
올릴 필요 없음
Lifted
형제 공유 검색어와 결과 목록처럼 같은 부모 아래에서 연결
가장 가까운 부모
Context
넓은 읽기 theme, locale, auth처럼 여러 깊이에서 참조
잦은 쓰기에는 비용 확인
Store
복잡한 앱 상태 여러 feature가 같은 원본을 변경
규칙 없이 쓰면 추적 어려움

원본 하나 · 콜백 의미 · 범위 점검

원본 하나 같은 의미의 값이 여러 컴포넌트에 복사 저장되지 않는다.
콜백 의미 onChange보다 onUserSelected처럼 도메인 의도가 드러난다.
범위 전역 저장소가 한 화면 전용 상태를 떠안지 않는다.
파생값 필터된 목록처럼 계산 가능한 값은 원본으로 저장하지 않는다.