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

news/2025/2/19 14:31:10
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.niftyadmin.cn/n/5852679.html

相关文章

MySQL的SQL执行流程

项目查询数据库的流程 用户通过Tomcat服务器发送请求到MySQL数据库的过程。 用户发起请求:用户通过浏览器或其他客户端向Tomcat服务器发送HTTP请求。 Tomcat服务器处理请求: Tomcat服务器接收用户的请求,并创建一个线程来处理这个请求。 线…

使用C#元组实现列表分组汇总拼接字段

文章目录 使用C#元组实现列表分组汇总拼接字段代码运行结果 使用C#元组实现列表分组汇总拼接字段 代码 string message string.empty; var tupleList new List<Tuple<string, string, string>>(); tupleList.Add(new Tuple<string, string, string>("…

更高效实用 vscode 的常用设置

VSCode 可以说是文本编辑神器, 不止程序员使用, 普通人用其作为文本编辑工具, 更是效率翻倍. 这里分享博主对于 VSCode 的好用设置, 让 VSCode 如虎添翼 进入设置 首先进入设置界面, 后续都在这里进行配置修改 具体设置 每项配置通过搜索关键字, 来快速定位配置项 自动保存…

Ubuntu 22.04完整安装Xinference及解决依赖报错

注&#xff1a;文中使用的环境为Ubuntu 22.04 LTS CUDA 12.4.1 1、创建conda环境 conda create -n xinference python3.11 -y conda activate xinference2、安装Xinference pip install "xinference[all]"3、解决报错 Pytorch报错 根据Pytorch安装指引进行安装…

面试经典150题——堆

文章目录 1、数组中的第K个最大元素1.1 题目链接1.2 题目描述1.3 解题代码1.4 解题思路 2、IPO2.1 题目链接2.2 题目描述2.3 解题代码2.4 解题思路 3、查找和最小的 K 对数字3.1 题目链接3.2 题目描述3.3 解题代码3.4 解题思路 4、数据流的中位数4.1 题目链接4.2 题目描述4.3 解…

KubeSphere 和 K8s 高可用集群离线部署全攻略

本文首发&#xff1a;运维有术&#xff0c;作者术哥。 今天&#xff0c;我们将一起探索如何在离线环境中部署 K8s v1.30.6 和 KubeSphere v4.1.2 高可用集群。对于离线环境的镜像仓库管理&#xff0c;官方推荐使用 Harbor 作为镜像仓库管理工具&#xff0c;它为企业级用户提供…

深入解析 vLLM:高性能 LLM 服务框架的架构之美(上)

修改内容时间2.4.1处理请求的流程&#xff0c;引用更好的流程图2025.02.11首发2025.02.08 1. vLLM 整体代码架构 1.1 vLLM 的设计目标与特点 vLLM 是一个高性能的大语言模型服务框架。在大语言模型日益普及的今天&#xff0c;如何高效地提供推理服务成为一个重要挑战。传统的…

jenkins服务启动-排错

服务状态为active (exited) 且进程不在 查看/etc/rc.d/init.d/jenkins配置 获取配置参数 [rootfy-jenkins-prod jenkins]# cat /etc/rc.d/init.d/jenkins | grep -v #JENKINS_WAR"/usr/lib/jenkins/jenkins.war" test -r "$JENKINS_WAR" || { echo "…