diff --git a/src/store/user.ts b/src/store/user.ts index 6629a8c..50da2e8 100644 --- a/src/store/user.ts +++ b/src/store/user.ts @@ -1,6 +1,7 @@ import { produce } from 'immer'; import { setCookie } from 'nookies'; import { create } from 'zustand'; +import { devtools, persist } from 'zustand/middleware'; import { apiGetMyUserInfo, apiUserLogin } from '@/services'; @@ -19,54 +20,63 @@ interface UserState { getUserInfo: () => Promise; } -// 创建状态存储 -const useUserStore = create((set) => { - const getUserInfo = async () => { - const result = await apiGetMyUserInfo(); - if (result.code === 200) await set(produce((state) => void (state.userInfo = result.data))); - return result.code === 200; - }; +const useUserStore = create()( + devtools( + persist( + (set) => { + const getUserInfo = async () => { + const result = await apiGetMyUserInfo(); + if (result.code === 200) await set(produce((state) => void (state.userInfo = result.data))); + return result.code === 200; + }; - return { - userInfo: { - avatar: '', - badgeList: [0], - birthDay: '', - commentReplyCount: 0, - contributorRole: '', - fansCount: '', - followCount: '', - haveNewMessage: false, - id: '', - ipLocation: '', - journalCount: 0, - mobile: '', - nickName: '', - relation: 0, - sex: 0, - signature: '', - songCount: 0, - thumbUpCount: 0, - }, - // 展示登录框 - showLogin: false, - // 调用出登录框 - setShowLogin: (value) => set({ showLogin: value }), - // 更新用户信息 - setUserInfo: (userInfo) => set({ userInfo }), - // 获取用户信息 - getUserInfo, - // 用户登录 - userLogin: async (params) => { - const result = await apiUserLogin(params); - if (result.code !== 200) return false; - await setCookie(null, 'token', result.data, { - maxAge: 7 * 24 * 60 * 60, - path: '/', - }); - return await getUserInfo(); - }, - }; -}); + return { + userInfo: { + avatar: '', + badgeList: [0], + birthDay: '', + commentReplyCount: 0, + contributorRole: '', + fansCount: '', + followCount: '', + haveNewMessage: false, + id: '', + ipLocation: '', + journalCount: 0, + mobile: '', + nickName: '', + relation: 0, + sex: 0, + signature: '', + songCount: 0, + thumbUpCount: 0, + }, + // 展示登录框 + showLogin: false, + // 调用出登录框 + setShowLogin: (value) => set({ showLogin: value }), + // 更新用户信息 + setUserInfo: (userInfo) => set({ userInfo }), + // 获取用户信息 + getUserInfo, + // 用户登录 + userLogin: async (params) => { + const result = await apiUserLogin(params); + if (result.code !== 200) return false; + await setCookie(null, 'token', result.data, { + maxAge: 7 * 24 * 60 * 60, + path: '/', + }); + return await getUserInfo(); + }, + }; + }, + { + name: 'user', + getStorage: () => localStorage, + }, + ), + ), +); export default useUserStore;