uniapp Vue3版本,用pinia存储持久化插件pinia-plugin-persistedstate对微信小程序的配置

刷新后,数据不见了。

Pinia插件pinia-plugin-persistedstate可配置的 Pinia 存储持久化。

uniapp中使用pinia插件

HBuilder X 已内置了 Pinia,无需手动安装。

在uniapp的main.js中导入pinia即可,代码如下:

js 复制代码
import App from './App'
import { createSSRApp } from 'vue';
import * as Pinia from 'pinia';

export function createApp() {
	const app = createSSRApp(App);
	app.use(Pinia.createPinia());
	return {
		app,
		Pinia, // 此处必须将 Pinia 返回
	};
}

在项目根目录下使用命令行窗口安装插件:npm i pinia-plugin-persistedstate

main.js导入插件,修改官方示例代码,如下所示:

js 复制代码
import { createSSRApp } from 'vue'
import * as Pinia from 'pinia';
import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'
export function createApp() {
  const app = createSSRApp(App)
  const pinia = Pinia.createPinia()
  pinia.use(piniaPluginPersistedstate)
  app.use(pinia);
  return {
    app,
    Pinia
  }
}

在defineStore函数内设置一个对象参数,persist:true便可开启持久化,然后代码这样写:

js 复制代码
export const useCartStore = defineStore('cart', () => {	
    const goodsTotal = computed(()=>{
        ...实现代码
    })	
    const priceTotal = computed(()=>{
        ...实现代码
    })	
    const pushGoods = (data)=>{
        ...实现代码
    }
    return {
        cartList,
        pushGoods,
        goodsTotal,
        priceTotal
    }
},{
    persist:true
});

h5,就是存localstorage的。

微信小程序没有localsotrage,所以对persist内的storage进行设置。

js 复制代码
export const useCartStore = defineStore('cart', () => {	
    const goodsTotal = computed(()=>{
        ...实现代码
    })	
    const priceTotal = computed(()=>{
        ...实现代码
    })	
    const pushGoods = (data)=>{
        ...实现代码
    }
    return {
        cartList,
        pushGoods,
        goodsTotal,
        priceTotal
    }
},{
    persist:{
        storage:{
            getItem:uni.getStorageSync,
            setItem:uni.setStorageSync			
        }
    }
});

在微信小程序控制台的storage中便可找到要缓存的数据。

微信小程序可能会出现的问题 在H5中实验正常的话,在微信小程序不起作用,并且控制台会报错 TypeError: Cannot read property 'localStorage' of undefind

在uniapp项目中unpackage打包目录中,删除掉之前打包的mp-weixin文件,重启微信小程序项目,这样应该问题就能解决了。

相关推荐
by————组态6 小时前
Ricon组态组件生态 - 丰富的可视化组件库
运维·前端·物联网·组态·组态软件
天蓝色的鱼鱼6 小时前
Node.js 现在能直接跑 TypeScript 了,tsx 和 ts-node 还需要吗?
前端·typescript·node.js
阿猫的故乡6 小时前
Vue动态组件+异步组件实战:Tab切换、按需加载、KeepAlive缓存,一次搞定
前端·vue.js·缓存
风骏时光牛马6 小时前
Stylus预处理器完整语法与项目实战详细代码案例
前端
tangdou3690986556 小时前
DevOps Skill工具链:CI/CD流水线搭建全攻略
前端
tangdou3690986556 小时前
前端Skill全家桶:React+Vue+TypeScript开发实战
前端
大大杰哥6 小时前
Vue2学习(3)--组件中的通信方式/组件之间的交互
java·前端·javascript
糖醋丸子6 小时前
D3生成topo 结点连线 webpack 配置兼容ie 11
前端
阿猫的故乡6 小时前
Vue3自定义插件:封装一个全局消息提示插件,所有组件都能直接用
前端·javascript·vue.js
斯内普吖6 小时前
(开源)高校素拓分管理系统小程序实战指南 基于 Java + SpringBoot + uni-app + Vue + MySQL
java·spring boot·mysql·小程序·uni-app·开源