import { AuthStoreType } from "@/types/store/auth.type";
import { create } from "zustand";
import { persist, PersistStorage } from "zustand/middleware";
// Custom storage for zustand
const customStorage: PersistStorage<AuthStoreType> = {
getItem: (name) => {
const item = localStorage.getItem(name);
return item ? JSON.parse(item) : null;
},
setItem: (name, value) => {
localStorage.setItem(name, JSON.stringify(value));
},
removeItem: (name) => {
localStorage.removeItem(name);
},
};
export const useAuthStore = create<AuthStoreType>()(
persist(
(set) => ({
isLogin: false,
setIsLogin: (value) => set({ isLogin: value }),
uid: '',
setUid: (value) => set({ uid: value || '' }),
email: '',
setEmail: (value) => set({ email: value || '' }),
}),
{
name: 'auth-storage',
storage: customStorage, // Custom storage
}
)
);
스토어 코드
export type AuthStoreType = {
isLogin: boolean;
setIsLogin: (value: boolean) => void;
uid: string;
setUid: (value: string | undefined) => void;
email: string;
setEmail: (value: string | undefined) => void;
};
스토어 타입 코드
'라이브러리 > zustand' 카테고리의 다른 글
[Zustand] 전역 상태 관리 라이브러리 Zustand 기본 사용법 (0) | 2024.12.17 |
---|