问题描述
pinia-plugin-persist 是 pinia 中间件,可实现 pinia 数据持久化
在使用 pinia 中间件 pinia-plugin-persist 时,发现首次进入页面时无法对数据做存储
问题调试
在浏览器中调试发现,存储数据至sessionStorage时,只能在第二次进入时存储,第一次无效
查看插件源码发现,是第一次存储时无法触发 store 的 subscribe 方法
subscribe方法 需要在组件已被 added 的情况下,才能触发 subscribe,如果需要组件销毁或未挂在的情况仍能触发 subscribe ,需要修配置
pinia-plugin-persist 源码将该配置添加,也未提供添加该配置的方法,不支持组件未挂载时的数据持久化更新
解决方案
封装 store 中间件使用,配置参考 pinia-plugin-persist
- 以persist为是否需要对该仓库进行存储
- 以store的id作为key存储
- 添加配置 { detached: true } 支持组件销毁或未挂载时存储