首页 » 前端 » 正文

Pinia持久化pinia-plugin-persistedstate

一、重温Pinia

Pinia是Vue.js的轻量级状态管理库,旨在替代Vuex,提供更简洁的API和更好的TypeScript支持。‌ 它采用扁平化结构设计,移除了Vuex中的mutations和模块嵌套,支持Vue2和Vue3,并兼容Composition API风格。

Pinia的核心特性 ‌简化API设计‌。 移除了Vuex中冗长的mutations,仅保留state、getters和actions,更贴近组件开发习惯。‌‌‌‌

  1. 支持Composition API风格,与Vue3的响应式系统深度集成。‌‌
  2. TypeScript友好‌。 提供完整的类型推断,解决了Vuex对TypeScript支持不佳的问题。‌‌‌‌
  3. 扁平化架构‌。 废弃模块嵌套和命名空间,所有Store通过独立定义、按需引入的方式管理,降低复杂度。‌‌‌‌
特性PiniaVuex
API复杂度更简洁,无mutations需定义mutationsactions
TypeScript原生支持类型推断需额外配置
模块结构扁平化独立Store嵌套模块+命名空间

二、插件

虽然它们都为开发者提供了全局的响应式数据存储方案,但是有一点我们知道,页面刷新后,这些数据就都丢失了。有时候我们需要更持久的存储,当然,我们可以使用本地存储,但是有插件能更好地帮我们解决持久化问题。

插件 pinia-plugin-persistedstate旨在通过一致的 API 为每个人和每个项目提供对 Pinia store 的持久化。无论你是习惯使用默认值来保存一个完整的 store,还是需要具有多个 storage 和一个自定义序列化器的细粒度配置,该插件都能帮你搞定,所有这些都在您想要持久化的存储上的同一个persist选项中。

三、用法

1、入口处引入

2、在pinia配置中使用

ok,这样就可以了,你再刷新,数据仍旧可用。大家可以从它的官方文档中去看更多使用方法,比如指定data里某个数据持久化,也可以设置整站数据持久化,这里就不再赘述。

四、原理

pinia-plugin-persistedstate 的本质是利用浏览器存储机制(如 localStorage 或 sessionStorage)实现 Pinia 状态持久化的插件,其核心原理和功能如下:

1、核心原理

  1. 状态存储:在应用初始化时,插件会从指定的存储介质(如 localStorage)中读取数据,并将其与 Pinia 的初始状态合并,确保应用可以从之前的状态继续运行。
  2. 状态更新:当 store 中的状态发生变化时,插件会自动将变化的数据序列化为 JSON 字符串,并存储到指定的存储介质中,保证数据的持久性。

2、主要功能

  1. 存储方式选择:支持将状态存储在 localStorage 或 sessionStorage 中,开发者可根据需求选择合适的存储方式。
  2. 自定义存储键名:允许开发者自定义存储的键名,避免与其他应用冲突。
  3. 部分状态持久化:可通过 paths 选项指定需要持久化的状态路径,仅对必要的数据进行持久化,提高性能和效率。
  4. 自定义序列化和反序列化:支持自定义序列化和反序列化逻辑,方便处理特殊的数据结构,如日期对象或自定义对象。
  5. 多存储策略组合:可以为不同的状态指定不同的存储方式和键名,实现更灵活的状态管理。

发表评论