// 用户状态管理模块:管理用户的登录状态(token、昵称、用户ID) import { defineStore } from 'pinia' import { ref } from 'vue' import { getUserInfo } from '../api/user' export const useUserStore = defineStore('user', () => { // 从 localStorage 恢复 token,若不存在则为空字符串 const token = ref(localStorage.getItem('token') || '') const nickname = ref('') // 用户昵称 const userId = ref(null) // 用户 ID /** 设置 token 并持久化到 localStorage */ function setToken(t: string) { token.value = t localStorage.setItem('token', t) } /** 设置用户基本信息(昵称和 ID) */ function setUserInfo(nick: string, id: number) { nickname.value = nick userId.value = id } /** 从后端获取当前登录用户的信息 */ async function fetchUserInfo() { try { const res: any = await getUserInfo() setUserInfo(res.data.nickname, res.data.id) } catch (e) { console.error('获取用户信息失败', e) } } /** 退出登录:清空状态并移除 localStorage 中的 token */ function logout() { token.value = '' nickname.value = '' userId.value = null localStorage.removeItem('token') } return { token, nickname, userId, setToken, setUserInfo, fetchUserInfo, logout } })