因为微信小程序种是没有localstorage.setItem的方法的。所以要再使用持久化之后改成一下存储方式
persist.ts
import {PersistedStateOptions} from "pinia-plugin-persistedstate"; /** * @description pinia 持久化参数配置 * @param {String} key 存储到持久化的 name * @param {Array} paths 需要持久化的 state name * @return persist * */ const piniaPersistConfig = (key: string, paths?: string[]) => { const persist: PersistedStateOptions = { key, storage: { setItem(key, value) { uni.setStorageSync(key, value) // [!code warning] }, getItem(key) { return uni.getStorageSync(key) // [!code warning] }, }, // storage: sessionStorage, paths }; return persist; }; export default piniaPersistConfig;
然后在 定义缓存的内容就可以啦
import { defineStore } from 'pinia'
import piniaPersistConfig from "./persist";//上面写的哪个文件
export interface State {
userInfo: any;
globalData: any;
timerLock: boolean;
showLoading:boolean;
}
// @ts-ignore
export const useCommonStore = defineStore('pack-store', {
persist: piniaPersistConfig("pack-store"),
state: (): State => ({
userInfo: {},
globalData: {},
timerLock: false, //是否关闭合成定时器
showLoading:false,//loading是否显示
}),
getters: {},
actions: {
setuserInfo(state: State, data: any){
this.userInfo = data;
},
setGlobalData(data: any){
this.globalData = Object.assign({}, this.globalData, data);
console.log("state.globalData", this.globalData);
},
logout(){
uni.removeStorageSync("userInfo");
uni.removeStorageSync("token");
uni.removeStorageSync("openInfo");
uni.clearStorage();
uni.clearStorageSync();
this.userInfo = {};
this.timerLock = true;
},
setTimerLock (data: boolean){
this.timerLock = data;
},
setChangeLoading(data:boolean){
console.log("changeLoading",data)
this.showLoading = data;
},
},
});