hongjli
2025-04-16 ed1c1f25a544eaf08c7a7bcd3af93d7d26c8594e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import { create } from 'zustand';
import { StateCreator } from 'zustand';
 
interface UserInfo {
  id: number;
  nickname: string;
  accountName: string;
}
 
interface UserState {
  userInfo: UserInfo | null;
  token: string | null;
  setUserInfo: (info: UserInfo | null) => void;
  setToken: (token: string | null) => void;
  clearUserInfo: () => void;
}
 
const createUserStore: StateCreator<UserState> = (set) => ({
  userInfo: null,
  token: typeof window !== 'undefined' ? localStorage.getItem('token') : null,
  setUserInfo: (info: UserInfo | null) => set({ userInfo: info }),
  setToken: (token: string | null) => {
    if (token) {
      localStorage.setItem('token', token);
    } else {
      localStorage.removeItem('token');
    }
    set({ token });
  },
  clearUserInfo: () => {
    localStorage.removeItem('token');
    set({ userInfo: null, token: null });
  },
});
 
export const useUserStore = create(createUserStore);