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

关于uniapp使用pinia持久化配置兼容问题

import { defineStore } from 'pinia';
import { ref } from 'vue';
// 定义 Store
export const useMembersStore = defineStore('members', () => {


  // 状态
  const memberInfo = ref({})
  
  // actions
  const saveMemberInfo = (info: any) => {
    memberInfo.value = info
  }
  
  const clearMemberInfo = () => {
    memberInfo.value = {}
  }

  return {
    memberInfo,
    saveMemberInfo,
    clearMemberInfo
  }
},
{
  persist: {
    key: 'memberInfo',
    storage: {
      getItem(key) {
        return uni.getStorageSync(key) || null
      },
      setItem(key, value) {
        uni.setStorageSync(key, value)
      }
    }
  }
})

进行持久化配置,使用小程序uni兼容

在实例导出文件index.ts中

import { createPinia } from 'pinia';
import persist from 'pinia-plugin-persistedstate';
// 创建pinia实例
const pinia = createPinia();

// 使用持久化插件
pinia.use(persist);

export default pinia;
//模块统一导出
export * from './modules/members';

用的是pinia-plugin-persistedstate 持久化插件,因为它缺少两个依赖项

destr和deep-pick-omit,导致我一直报错

安装后

npm install deep-pick-omit


npm install destr

完美解决!!!

原因:

  • 依赖关系说明:
  • pinia-plugin-persistedstate 插件依赖于 destr 和 deep-pick-omit 这两个包
  • destr 用于安全地解析存储的数据(比如从 localStorage 读取的 JSON 字符串)
  • deep-pick-omit 用于处理深层对象的属性选择(比如选择性持久化 store 中的某些字段)
  • 为什么会出错:
  • 在新版本的打包工具中(如 Vite),所有依赖需要明确声明
  • 虽然 pinia-plugin-persistedstate 在其 package.json 中声明了这些依赖
  • 但在 UniApp 的构建环境中,这些间接依赖可能没有被正确解析和安装
  • 解决方案有效的原因:
  • 通过手动安装这两个依赖,我们确保了它们在项目的 node_modules 中可用
  • 打包工具现在可以找到并正确打包这些依赖
  • 这让 Pinia 的持久化插件能够正常工作

http://www.kler.cn/a/543141.html

相关文章:

  • 深入理解指针初阶:从概念到实践
  • Android 14.0 Launcher3单层模式workspace中app列表页排序功能实现
  • 2.Excel:滨海市重点中学的物理统考考试情况❗(15)
  • iOS主要知识点梳理回顾-3-运行时消息机制
  • 解决VsCode的 Vetur 插件has no default export Vetur问题
  • Node.js怎么调用到打包的python文件呢
  • WPF 设置宽度为 父容器 宽度的一半
  • 2.【线性代数】——矩阵消元
  • 笔记3——字符串和编码
  • 趣味魔法项目 LinuxPDF —— 在 PDF 中启动一个 Linux 操作系统
  • CSS 怎么实现样式隔离?
  • LVS作业
  • 使用Kafka Streams构建实时数据流处理系统:从基础到实践
  • 视频基础操作
  • 【进阶】JVM篇
  • MapboxGL加载离线字体
  • Android开发获取缓存,清理缓存工具类
  • 如何使用Java语言在Idea和Android中分别建立服务端和客户端实现局域网聊天
  • java后端开发day14--之前练习的总结和思考
  • 【通俗易懂说模型】一篇弄懂几个经典CNN图像模型(AlexNet、VGGNet、ResNet)
  • 基于全志T507的边缘计算机,推动光伏电站向智能运维转型
  • DVWA靶场篇(一)——命令执行、CSRF、文件包含
  • NO.12十六届蓝桥杯备战|关系操作符|操作符连用|浮点数比较|练习2道(C++)
  • win11 终端乱码导致IDE 各种输出也乱码
  • GitCode 助力 Easy-Es,革新 Elasticsearch 开发体验
  • 传统架构 VS 云上架构