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

uniapp微信小程序开发踩坑日记:Pinia持久化

如果你使用过Pinia,那你应该知道Pinia持久化插件:https://prazdevs.github.io/pinia-plugin-persistedstate/zh/

但由于官方文档提供的说明并不是针对小程序开发,所以我们在使用这个插件实现uniapp小程序开发中Pinia持久化会出现问题

我在CSDN上看了各种文章,在B站上刷了各种视频,AI也被我问烂了,最后将各种资源糅合在一起,拼凑出了一套完整的解决方案,搜索资源的能力真的很重要!

以上是闲聊(手动狗头),以下是uniapp微信小程序开发实现Pinia持久化的完整方法(阅读此文章请结合Pinia持久化插件官方文档:https://prazdevs.github.io/pinia-plugin-persistedstate/zh/)

1、安装依赖

这一步安装官方文档来就好(官方文档:https://prazdevs.github.io/pinia-plugin-persistedstate/zh/)

2、将插件添加到 pinia 实例上

在main.js中加入如下代码

//将pinia持久化插件添加到pinia实例上
import { createPinia } from 'pinia'
import piniaPluginPersistedstate from 'pinia-plugin-persistedstate' //导入pinia持久化插件
const pinia = createPinia()
app.use(pinia.use(piniaPluginPersistedstate)); //pinia插件的安装配置(千万别忘了这步!!!)

3、用法

这一步与官方文档有所不同,插件默认使用 localStorage 实现持久化,小程序端不兼容,需要替换持久化 API

组合式API下,配置持久化的具体代码如下(主要式persist的部分和官方文档不同),选项式API也类似:

import { defineStore } from 'pinia'

export const useStore = defineStore(
  'main',
  () => {
    const someState = ref('你好 pinia')
    return { someState }
  },
  {
  // 配置持久化
  persist: {
    // 调整为兼容多端的API
    storage: {
      setItem(key, value) {
        uni.setStorageSync(key, value) // [!code warning]
      },
      getItem(key) {
        return uni.getStorageSync(key) // [!code warning]
      },
    },
  },
},
)

完成以上三个步骤后,所有Pinia仓库中的数据都会被保存在本地


http://www.kler.cn/news/234736.html

相关文章:

  • 【Linux】Linux下的基本指令
  • 瓦片边移动边绘制的性能优化
  • RPA财务机器人之UiPath实战 - 自动化操作Excel进行财务数据汇总与分析之流程建立与数据读取、处理、汇总、分析
  • 边缘计算的重要性与应用场景
  • 117.乐理基础-五线谱-音值组合法(二)
  • List stream的9种常用功能
  • SpringCloud-Nacos服务分级存储模型
  • 【机器学习】数据清洗之识别异常点
  • 视觉SLAM十四讲学习笔记(二)三维空间刚体
  • JAVA面试题15
  • 【VTKExamples::PolyData】第二十五期 IntersectionPolyDataFilter
  • 口腔助手|口腔挂号预约小程序|基于微信小程序的口腔门诊预约系统的设计与实现(源码+数据库+文档)
  • C++数据类型、变量常量
  • opencv mat用法赋值克隆的操作和一些基本属性
  • 备战蓝桥杯---数学基础1
  • 代码随想录算法训练营第二九天 | 递增子序列、排列
  • 【C++第二阶段】空指针访问成员函数常成员函数常成员属性
  • 【电路笔记】-串联电感
  • 使用C#快速创建一个非常实用的桌面应用程序
  • python笔记12
  • Shell - 学习笔记 - 2.11 - Shell数组:Shell数组定义以及获取数组元素
  • 使用Express 构建高效的Web应用程序
  • c++ STL系列——(四)queue
  • 在C++的union中使用std::string(非POD对象)的陷阱
  • 数字图像处理与Python语言实现-常见图像特效(二)
  • 振荡器设计
  • C#系列-多线程(4)
  • 极狐GitLab 使用阿里云作为 OmniAuth 身份验证 provider
  • springboot175图书管理系统
  • spring 常用的注入方式有哪些?spring 中的 bean 是线程安全的吗?spring 事务实现方式有哪些?