selector
렌더링에 필요한 상태 조각만 선택해 구독한다.
Zustand는 store 전체를 전역 변수처럼 쓰는 방식이 아니라, 컴포넌트가 selector로 필요한 상태 조각만 읽는 구조다.
selector
렌더링에 필요한 상태 조각만 선택해 구독한다.
set / get
상태와 action을 한 함수 안에서 만들고 타입을 함께 묶는다.
persist / devtools
저장, 로깅, 디버깅은 store 경계에서 붙인다.
| 구성 | 타입으로 먼저 정할 것 | 렌더링 영향 |
|---|---|---|
| State Type | count, user, actions처럼 store가 보유할 데이터와 함수 | 필드가 작을수록 selector가 좁아진다. |
| Action | set으로 바꿀 상태와 인수 타입 | 변경된 조각을 구독한 컴포넌트만 다시 그린다. |
| Middleware | persist key, devtools 이름, 확장된 store shape | 디버깅과 저장은 store 밖 사용처를 흐리지 않는다. |
export const useCounterStore =
create<CounterState>((set) => ({
count: 0,
inc: () => set((s) => ({ count: s.count + 1 })),
}));
핵심: store를 크게 만드는 것보다 selector를 작게 유지하는 것이 불필요한 렌더링을 줄인다.