프로젝트에서 Zustand를 상태 관리 라이브러리로 채택하였는데 불변성 관리와 상태의 일시적 저장이 필요했습니다.
해당 상황에 맞는 유용한 라이브러리를 찾아보니, Zustand 도 Immer와 함께 사용하여 불변성을 유지한다는 것을 알게 되었고, zustand-persist 를 통해 상태를 로컬스토리지에 저장할 수 있다는 것을 알게 되었습니다.
아래와 같이 사용할 수 있었습니다.
import create from 'zustand';
import { persist } from 'zustand/middleware';
import produce from 'immer';
// 스토어 생성
const useStore = create(persist(
(set) => ({
count: 0,
increase: () => set((state) => produce(state, draft => { draft.count += 1; })),
decrease: () => set((state) => produce(state, draft => { draft.count -= 1; }))
}),
{
name: 'count-storage', // 로컬 스토리지 키 이름
}
));