npm i zustand
import { create } from "zustand";
import { persist } from "zustand/middleware";
// 상태 타입 정의
interface CounterState {
count: number;
increase: () => void;
decrease: () => void;
}
// 스토어 생성
const useCounterStore = create<CounterState>()(
persist(
(set) => ({
count: 0,
increase: () => set((state) => ({ count: state.count + 1 })),
decrease: () => set((state) => ({ count: state.count - 1 })),
}),
{ name: "counter-storage" } // 로컬 스토리지 키
)
);
export default useCounterStore;
"use client";
import useCounterStore from "./store";
function Counter() {
// 상태 가져오기
const { count, increase, decrease } = useCounterStore();
return (
<div>
<h1>Counter</h1>
<h2>{count}</h2>
<button onClick={increase}>
+
</button>
<button onClick={decrease}>-</button>
</div>
);
}
export default Counter;
Components 제작 진행 중 props drilling이 심하게 발생하는 부분은 관리가 필요하다고 생각