07. 사용 사례 시나리오 1: Zustand
🔖 1. Zustand란?
특장점
예시 코드
import create from 'zustand';
// 1. 전역 상태(스토어) 정의
// create 함수로 상태와 액션(증가, 감소, 리셋)을 정의한 스토어(useStore)를 만든다.
const useStore = create((set) => ({
count: 0,
increase: () => set((state) => ({ count: state.count + 1 })),
decrease: () => set((state) => ({ count: state.count - 1 })),
reset: () => set({ count: 0 }),
}));
// 상태 변경 함수인 set을 통해 count 값을 업데이트하면
// count에 의존하는 컴포넌트만 리렌더링 된다.
function Counter() {
// 2. 상태 사용
// useStore 훅을 컴포넌트 내에서 호출하면 count와 각 함수를 얻을 수 있다.
const { count, increase, decrease, reset } = useStore();
return (
<div>
<h1>{count}</h1>
<button onClick={increase}>곰 한마리 탄생!!</button>
<button onClick={decrease}>곰 한마리 사망..</button>
<button onClick={reset}>리셋</button>
</div>
);
}
export default function App() {
return (
<div>
<h2>Zustand Bear 🐻</h2>
<Counter />
</div>
);
}Zustand 쓸까 말까
🔖 2. 불변 상태 모델
'불변 상태 모델'을 풀어 쓰기
예시 코드
예시를 통해 장점 느껴보기
🔖 3. 수동 렌더링 최적화
선택자 기반 리렌더링 제어란?
예시 코드
Last updated