[问题记录] pinia-plugin-persist 实现数据持久化插件bug记录

650 阅读1分钟

问题描述

pinia-plugin-persist 是 pinia 中间件,可实现 pinia 数据持久化

在使用 pinia 中间件 pinia-plugin-persist 时,发现首次进入页面时无法对数据做存储

问题调试

在浏览器中调试发现,存储数据至sessionStorage时,只能在第二次进入时存储,第一次无效

image.png 查看插件源码发现,是第一次存储时无法触发 store 的 subscribe 方法

image.png

subscribe方法 需要在组件已被 added 的情况下,才能触发 subscribe,如果需要组件销毁或未挂在的情况仍能触发 subscribe ,需要修配置

pinia-plugin-persist 源码将该配置添加,也未提供添加该配置的方法,不支持组件未挂载时的数据持久化更新

解决方案

封装 store 中间件使用,配置参考 pinia-plugin-persist

  1. 以persist为是否需要对该仓库进行存储
  2. 以store的id作为key存储
  3. 添加配置 { detached: true } 支持组件销毁或未挂载时存储

image.png