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.ts
 import 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.ts

export 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

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue3中配置Pinia数据持久化的步骤如下: 1. 首先,需要导入Pinia库并创建一个store。在store中,我们可以定义需要持久化的数据。可以使用`ref`函数将数据包裹起来,以确保数据的响应性。 引用中的代码演示了如何创建一个带有持久化选项的store: ```javascript import { defineStore } from 'pinia' import { ref } from "vue" export default defineStore("user", () => { let role = ref("") // 使用ref包裹需要持久化的数据 return { role } }, { persist: { enabled: true, // 启用持久化 // 这个配置代表整个store的数据都会被持久化 }, }) ``` 2. 然后,在主应用程序中导入并安装Pinia插件。可以通过创建一个`pinia`实例,并将其传递给Vue应用程序的`app.use()`方法来完成插件的安装。 ```javascript import { createPinia } from 'pinia' import { createApp } from 'vue' import App from './App.vue' const app = createApp(App) // 创建pinia实例并将其传递给app.use() const pinia = createPinia() app.use(pinia) app.mount('#app') ``` 通过以上步骤,你就成功配置了Pinia数据持久化。现在,store中的数据将在刷新页面后保持不变。 请注意,持久化选项还可以进一步配置,以满足具体的需求。可以参考Pinia官方文档获取更多详细信息和配置选项的说明。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [uniapp+vue3+pinia框架(模块化+持久化存储)](https://download.csdn.net/download/qq_35079107/87910679)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [vue3.2 pinia 数据持久化](https://blog.csdn.net/m0_60508458/article/details/130546847)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Vue3+Pinia+数据持久化 20分钟快速上手](https://blog.csdn.net/zhgweb/article/details/129708483)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值