// stores/user.ts import { defineStore } from 'pinia' import { ref } from 'vue' import { parse, stringify, } from 'zipson' export const useUserStore = defineStore('user', () => { const isLoggedIn = ref(false) const token = ref('') const userInfo = ref({}) function setToken(userToken: string) { isLoggedIn.value = true token.value = userToken localStorage.setItem('token', userToken) } function setUserInfo(info: any) { userInfo.value = info } // 登出 function logout() { isLoggedIn.value = false token.value = '' localStorage.removeItem('token') } // 检查登录状态 function checkLoginStatus() { const savedToken = localStorage.getItem('token') if (savedToken) { isLoggedIn.value = true token.value = savedToken } } return { isLoggedIn, token, logout, checkLoginStatus, setToken, setUserInfo, userInfo, } }, { persist: { storage: { getItem(key) { return window.localStorage.getItem(key) }, setItem(key, value) { window.localStorage.setItem(key, value) }, }, serializer: { deserialize: parse, serialize: stringify, }, }, }) // import { defineStore } from 'pinia' // interface State { // token: string // userInfo: Record // 或者定义一个更具体的类型 // } // export const useUserStore = defineStore('user', { // state: (): State => ({ // token: '', // userInfo: {}, // }), // actions: { // setToken(token: string) { // this.token = token // debugger // }, // setUserInfo(userInfo: Record) { // this.userInfo = userInfo // debugger // }, // // logout() { // // getLogout().then(() => { // // this.userInfo = {} // // this.token = '' // // }) // // } // }, // getters: { // // 定义计算属性 // }, // persist: { // enabled: true, // strategies: [ // { // // key: 'userInfo', // Storage: localStorage, // paths: ['userInfo', 'token'], // }, // ], // }, // })