微信小程序使用pinia-plugin-persistedstate报错找不到localstorage

因为微信小程序种是没有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;
    },
  },
});
相关推荐
前端小万2 天前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
MoonMoonLee2 天前
小程序配置
小程序
拖孩2 天前
代码我能全交给 AI,流量主这 500 个访客它一个都替不了我
前端·后端·微信小程序
2501_916007472 天前
苹果商店iOS应用上架费用全面解析:开发者计划与审核费用计算
android·ios·小程序·https·uni-app·iphone·webview
JQweryuiop2 天前
中小型游戏陪练工作室数字化管理实践:基于七彩屋电竞护航小程序订单、履约与绩效系统的落地复盘
大数据·游戏·小程序·架构
Ai-_Man2 天前
您您这可以把Mistral AI的多个会话比如说。左侧的多个会话一次性导出吗?不是单条会话里面的多次会对话。
人工智能·ai·小程序·电脑
2501_916008892 天前
如何实现iOS App代码混淆:SwiftShield使用指南
android·ios·小程序·https·uni-app·iphone·webview
微擎应用市场2 天前
简单拼车小程序系统:实现出行与物流资源的高效精准匹配
小程序
甜到心里的蛋糕2 天前
如何用企业微信实现让微信收到通知实时通知
服务器·python·微信小程序·fastapi
2501_916008892 天前
怎么用 Godot 导出 iOS 应用并上架 App Store?签名字段该填什么?
android·ios·小程序·https·uni-app·iphone·webview