상태 경계

상태는 바뀌는 이유와 필요한 범위로 배치한다

값이 어디서 바뀌고 누가 읽는지 먼저 나누면 서버 컴포넌트, 로컬 상태, 전역 상태의 역할이 선명해집니다.

server data

요청마다 새로 읽는 데이터

DB, CMS, API 응답처럼 서버 신뢰원이 있는 값은 서버 컴포넌트에서 먼저 가져옵니다.

async 컴포넌트와 캐시
local ui

한 컴포넌트 안에서만 변하는 값

입력값, 열림 상태, 선택 탭처럼 화면 조작에 묶인 값은 가까운 곳에 둡니다.

useState
shared ui

여러 클라이언트 컴포넌트가 공유

테마, 필터, 장바구니처럼 멀리 떨어진 컴포넌트가 함께 쓰면 공유 도구를 고려합니다.

Context 또는 상태 라이브러리
판단 순서

서버에서 확정 가능한 값은 서버에 두고, 사용자 상호작용으로만 바뀌는 값만 클라이언트 상태로 내려옵니다.