当前位置: 首页 > news >正文

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

在这里插入图片描述

需求描述

如上图所示,使用uniapp开发微信小程序商城时候,会涉及到加入到购物车模块,一般用户选择的商品加入购物车,在开发的时候可以使用pinia,将用户选择加入购物车的商品进行全局状态管理,问题在于强制刷新页面的时候,刚刚选择加入购物车的商品列表就清空了。

那么怎么解决这个问题那?

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

uniapp中使用pinia插件

1.在uniapp项目中使用pinia

要想使用插件的话,首先要在uniapp的main.js中导入pinia,HBuilder X 已内置了 Pinia,无需手动安装,下方是官方的示例代码:

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 返回};
}

2.安装pinia-plugin-persistedstate插件

pinia-plugin-persistedstate插件地址:https://prazdevs.github.io/pinia-plugin-persistedstate/zh/

在项目根目录下使用命令行窗口安装插件

npm i pinia-plugin-persistedstate

安装完成,在main.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}
}

3.defineStore中做持久化配置

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

在defineStore函数内设置一个对象参数,persist:true便可开启持久化,当cartList数据发生改变时,在浏览器控制台的Application下Local storage中,可以找到key为“cart”的数据,如下所示:
在这里插入图片描述
如上所示,在H5开发中,使用pinia的插件再刷新的时候,购物车列表中的数据将不会消失,说明已经做了持久化的存储,但是微信小程序中是没有localstorage的,仍然不能进行持久化,下面就对persist内的storage进行设置,可以修改缓存的方式。

4.在微信小程序中做持久化存储

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的获取缓存和设置缓存的方式,在uniapp开发微信小程序中,提供了同步获取/修改缓存的API,按照如上方式的设置,在微信小程序控制台的storage中便可找到要缓存的购物车列表数据,如下图所示:
在这里插入图片描述

微信小程序可以会出现的问题

再H5中实验正常的话,在微信小程序不起作用,并且控制台会报错 TypeError: Cannot read property ‘localStorage’ of undefind

解决方法:
在这里插入图片描述
在uniapp项目中unpackage打包目录中,删除掉之前打包的mp-weixin文件,重启微信小程序项目,这样应该问题就能解决了,如果还存在问题,请在评论区留言。

http://www.lryc.cn/news/605933.html

相关文章:

  • 【生活篇】Ubuntu22.04安装网易云客户端
  • 计数组合学7.9( 标量积)
  • 如何使用 JavaScript 接入实时行情 API
  • esim系统科普
  • ES 工业网关:比德国更适配,比美国更易用
  • 是德科技的BenchVue和纳米软件的ATECLOUD有哪些区别?
  • node.js之Koa框架
  • 25-vue-photo-preview的使用及使用过程中的问题解决方案
  • Hive课后练习题
  • 【Leetcode】2683. 相邻值的按位异或
  • 《Java 程序设计》第 16 章 - JDBC 数据库编程
  • rabbitmq的安装和使用-windows版本
  • MFC CChartCtrl编程
  • Python爬虫07_Requests爬取图片
  • 【Java23种设计模式】:模板方法模式
  • 【C语言】深度剖析指针(三):回调机制、通用排序与数组指针逻辑
  • PostgreSQL面试题及详细答案120道(01-20)
  • 前端方案设计:实现接口缓存
  • 什么是网络安全?网络安全包括哪几个方面?学完能做一名黑客吗?
  • 网络与信息安全有哪些岗位:(4)应急响应工程师
  • Amazon RDS for MySQL成本优化:RDS缓存降本实战
  • 前缀和-1314.矩阵区域和-力扣(LeetCode)
  • 隐私灯是否“可信”?基于驱动层的摄像头指示机制探析
  • 【1】数据可视化分析方法
  • 20250731在荣品的PRO-RK3566开发板的Android13下跑通敦泰的FT8206触控芯片
  • Google政策大更新:影响金融,Ai应用,社交,新闻等所有类别App
  • 新手教程:用外部 PostgreSQL 和 Zookeeper 启动 Dolphinscheduler
  • 25.(vue3.x+vite)两个pinia如何互相调用
  • Docker 初学者需要了解的几个知识点 (七):php.ini
  • LoggerFactory(日志门面框架核心工厂类)详解