import { defineStore, acceptHMRUpdate } from "pinia"; import { RouteRecordRaw } from "vue-router"; export const useStore = defineStore({ id: "storeInfo", state: () => ({ userInfo: { id: '' }, // 当前的用户信息 routers: [], // 返回的所有路由 asyncRoutesMark: false, // 是否添加过路由 }), getters: { getRoutersList(): RouteRecordRaw[] { // 取值 return this.routers; }, getToken(): string { return this.userInfo?.id || '' } }, actions: { // 方法 setRouters(arr: any) { this.routers = arr; }, setAsyncRoutesMark(val: boolean) { this.asyncRoutesMark = val; }, setValue(val: any, key: 'userInfo' | 'routers' | 'asyncRoutesMark') { this[key] = val; }, clearStore() { localStorage.clear(); sessionStorage.clear(); this.userInfo = { id: '' }; this.routers = []; this.asyncRoutesMark = false; } }, persist: true, // 是否持久化 }); if (import.meta.hot) { import.meta.hot.accept(acceptHMRUpdate(useStore, import.meta.hot)); }