Vue3 不同版本的Pinia如何做持久化存储

不同版本的pinia支持的存储插件不同,高/低版本的持久化存储插件整合如下,都是我实践过的,请放心使用。😊

一、Vue3.2,pinia <= 2.0.5,用pinia-plugin-persist

提示:不要去下最新的pinia-plugin-persistedstate,那是给vue3.3和pinia2.1以上版本使用的。

1、安装
npm i pinia-plugin-persist
或 yarn add pinia-plugin-persist
2.引入
//  store/index.tsimport piniaPluginPersist from "pinia-plugin-persist"; // 引入pinia.use(piniaPluginPersist);  // 使用持久化存储插件
3.需要存储的子store

在与actions同层级添加persist对象
storage: 有sessionStorage和localStorage,临时和长缓存,根据自身需求选择
paths:要存储当前store哪些数据,例如:我要存储用户登录信息loginForm,填入即可。

import { defineStore } from "pinia";
export const useUserStore = defineStore("User", {state: () => ({loginForm: {},}),getters: {},actions: {},persist: {// 开启持久化enabled: true,// 选择存储方式和内容strategies: [{ storage: localStorage, paths: ["loginForm"] }],},
});

插一句:由于我的项目是老的vue3.2和pinia2.0.5,如果项目全面升级为3.3,那需要改动的东西太多了,到时各种依赖的版本冲突就出来了,不好整,所以就保留当前版本,但我要用插件存储,找了很多方案都是vue3.3的,找了很久才找到匹配vue3.2的文章。因此做个笔记,方便以后查阅。其实用H5的localStorage.getItem/setItem也可以实现,只是那个设置和取值没这个方便,所以选了这个。
参考文章:https://www.cnblogs.com/yuwenjing0727/p/17163069.html

二、vue3.2/3.3,pinia >= 2.1.7 pinia-plugin-persistedstate

1、安装

pnpm add pinia-plugin-persistedstate@2.3.0 -S

2、pinia引入使用
store/index.ts

import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'// 使用持久化存储插件
pinia.use(piniaPluginPersistedstate)

3、需要长缓存的store这样配置

store/modules/user.tsexport const useStore = defineStore({id: 'user',state: () => ({name: '很老很老的值',}),actions: {changeName(name: string) {this.name = name},},// 核心代码在这里 ↓//persist:true //存储整个对象// 选择性的长缓存persist: {storage: localStorage, //default localStorage//设置['name'] -->只会将name 这个key进行缓存paths: ['name'],},
})

参考文章: https://download.csdn.net/blog/column/12471199/133916576

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/619127.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QT基础篇(5)QT5主窗口

1.QT5主窗口 QT5主窗口由以下几个部分构成&#xff1a; 标题栏&#xff1a;位于窗口的顶部&#xff0c;显示窗口的标题和控制按钮&#xff08;最小化、最大化、关闭&#xff09;。菜单栏&#xff1a;位于窗口的顶部&#xff0c;包含一系列菜单和菜单项&#xff0c;用于添加和…

K8S后渗透横向节点与持久化隐蔽方式探索

前言 通常在红蓝对抗中&#xff0c;我们可能会通过各种方法如弱口令、sql注入、web应用漏洞导致的RCE等方法获得服务器的权限&#xff1b;在当前云原生迅猛发展的时代&#xff0c;这台服务器很可能是一个容器&#xff0c;在后续的后渗透由传统的提权变为容器逃逸&#xff0c;内…

easyexcel上传校验的方法封装

easyexcel版本3.1.5 使用自定义注解的方式来定义校验的类型&#xff0c;避免冗余代码。 //校验value不能为空&#xff0c;且长度最大为30 RowCheck(value {RowCheckType.EMPTY,RowCheckType.LENGTH},max 30) private String value; 具体代码&#xff1a; 首先定义校验类型…

RTSP协议实现发送ACC音频数据

一.AAC音频格式介绍 AAC音频格式&#xff1a;Advanced Audio Coding&#xff08;高级音频解码&#xff09;&#xff0c;是一种由MPEG—4标准定义的有损音频压缩格式。音频压缩编码的输出码流&#xff0c;以音频帧的形式存在。每个音频帧包含若干个音频采样的压缩数据&#xff0…

Linux常用命令之cp、rm、touch、mv

cp: 复制文件或目录 -f 覆盖目标同名文件或目录时不进行提醒&#xff0c;而直接强制复制。-i 覆盖目标同名文件或目录时提醒用户确认。-p 复制时保持源文件的权限、属主及时间标记等属性不变&#xff08;默认权限属主是变化的&#xff09;。-r 复制目录时必须使用此选项&a…

vue3安装 router 路由

安装路由 cnpm i vue-router在src文件夹下创建router/index.ts import {createRouter,createWebHashHistory} from vue-router const routercreateRouter({history:createWebHashHistory(),routes:[{path:"/",name:home,component: () > import(../views/Home/i…

STL标准库与泛型编程(侯捷)笔记6(完结)

STL标准库与泛型编程&#xff08;侯捷&#xff09; 本文是学习笔记&#xff0c;仅供个人学习使用。如有侵权&#xff0c;请联系删除。 参考链接 Youbute: 侯捷-STL标准库与泛型编程 B站: 侯捷 - STL Github:STL源码剖析中源码 https://github.com/SilverMaple/STLSourceCo…

力扣(leetcode)第500题键盘行(Python)

500.键盘行 题目链接&#xff1a;500.键盘行 给你一个字符串数组 words &#xff0c;只返回可以使用在 美式键盘 同一行的字母打印出来的单词。键盘如下图所示。 美式键盘 中&#xff1a; 第一行由字符 “qwertyuiop” 组成。 第二行由字符 “asdfghjkl” 组成。 第三行由字…

【DP】300. 最长递增子序列

题目 更好的方法是耐心排序&#xff0c;参见《算法小抄》的内容&#xff01;&#xff01;&#xff01; 法1&#xff1a;DP 基础解法必须掌握&#xff01;&#xff01;&#xff01; class Solution {public int lengthOfLIS(int[] nums) {if (nums null || nums.length 0) …

从比特币、以太坊生态,到AI与新公链复兴,谁将接棒2024年的主流叙事?

2023年10月份至今&#xff0c;现货比特币ETF一直都是促使市场反弹的核心叙事之一&#xff0c;如今靴子终于落地&#xff0c;那在ETF预期尘埃落定的大背景下&#xff0c;接下来的加密市场有哪些赛道值得关注&#xff1f; 泛比特币生态 2023年比特币生态浪潮中&#xff0c;OKX等赢…

【DP】354. 俄罗斯套娃信封问题

题目 法1&#xff1a;DP&#xff0c;LIS问题 基本方法&#xff0c;必须掌握&#xff01;&#xff01;&#xff01; class Solution {public int maxEnvelopes(int[][] envelopes) {int n envelopes.length;if (n < 2) {return n;}Arrays.sort(envelopes, (a1, a2) ->…

企业信息化规划该如何落地?以制造型企业为例

企业信息化规划如何落地&#xff1f; 规划做好了&#xff0c;蓝图也画好了&#xff0c;人手一块大饼也已经揣好了&#xff0c;那么该怎么落地呢&#xff0c;这才是最关键的。 我将企业信息化规划落地分为4个周期&#xff0c;以最典型的制造行业为例&#xff0c;以简道云这个企…

Seata TM管理分支事务源码

TM相当于一个中间商&#xff0c;是没有涉及到任何数据库底层操作的。 TransactionalTemplate 1、TM向TC端发起一次开启全局事务的请求 io.seata.tm.api.TransactionalTemplate#beginTransaction --> io.seata.tm.api.DefaultGlobalTransaction#begin(int, java.lang.Strin…

【vue】vue跑马灯vue-marquee-text-component

vue2 npm install vue-marquee-text-component1.2.0 vue3 npm install vue-marquee-text-component 安装完成之后&#xff0c;vue页面全局引入 import Vue from vue import MarqueeText from vue-marquee-text-componentVue.component(marquee-text, MarqueeText) 页面引入 i…

配置DNS

vim /etc/named.conf vim /etc/named.rfc1912.zones cp named.localhost ./kgc.com.zone -p vim kgc.com.zone 设置备用dns服务器 修改主配置文件&#xff0c;并自动同步到从服务器

【分布式技术】监控平台zabbix介绍与部署

目录 一、为什么要做监控&#xff1f; 二、zabbix是什么&#xff1f; 三、zabbix有哪些组件&#xff1f; ​编辑Zabbix 6.0 功能组件&#xff1a; ●Zabbix Server ●数据库 ●Web 界面 ●Zabbix Agent ●Zabbix Proxy ●Java Gateway 四、zabbix的工作原理&#xf…

SQL-数据类型

&#x1f389;欢迎您来到我的MySQL基础复习专栏 ☆* o(≧▽≦)o *☆哈喽~我是小小恶斯法克&#x1f379; ✨博客主页&#xff1a;小小恶斯法克的博客 &#x1f388;该系列文章专栏&#xff1a;重拾MySQL &#x1f379;文章作者技术和水平很有限&#xff0c;如果文中出现错误&am…

【python】进阶--->MySQL数据库(二)

一、sql语句(结构化查询语言) 要和数据库进行交互,需要使用到数据库认识的语言 : sql语句 是关系型数据库都需要遵循的规范。不同数据库都支持sql语句,但是都有特有内容。 二、sql语句分类 数据定义语言 : 用来定义数据库–数据库,表,列. 数据操作语言 : 对数据库表中的记录进…

数据清洗:确保数据质量的关键步骤

在数据分析和处理的过程中&#xff0c;数据清洗是一个非常重要的环节。它的目的是确保数据的准确性、完整性和一致性&#xff0c;从而为后续的分析和决策提供可靠的基础。本文将详细介绍数据清洗的重要性、常见的数据清洗任务以及一些实用的数据清洗技术。 一、数据清洗的重要…

Ubuntu12.0安装g++过程及其报错

Ubuntu12.0安装g过程及其报错 https://blog.csdn.net/weixin_51286763/article/details/120703953 https://blog.csdn.net/dingd1234/article/details/124029945