pinia 持久化辅助插件
import { createPinia } from "pinia";
import piniaPluginPersist from "@wsvaio/pinia-plugin-persist";
const pinia = createPinia();
pinia.use(piniaPluginPersist());
defineStore("xxx", {
...
persist: true,
...
});
在 pinia 注册插件时只有 key、getter、setter 的配置 在每个 defineStore 中的配置有 key、getter、setter、incldue、exclude 配置,或是一个布尔值,用于快速启用
全局配置会作为局部配置的默认值 局部配置可以是一个布尔值、一个对象,也可以为一个数组!
定义持久化的 key 名,需要确保唯一性 默认为 publicKey + & + store.$id + & + index
定义如何获取和设置持久化,默认设置至 localStorage 可以通过 this 访问 store 实例
setter(key, value) {
console.log(this); // 访问store
localStorage.setItem(key, JSON.stringify(value));
},
getter(key) {
return JSON.parse(String(localStorage.getItem(key)))
}
定义要持久化的属性名,include 包含、exclude 排除,优先级:exclude > include 默认 include 包含所有,exclude 为空
includes: ['a', 'b', 'c.a', 'c.b'],
excludes: ['a', 'b', 'c.a', 'c.b'],
通过设置全局的 getter 和 setter,可以兼容微信小程序
piniaPluginPersist({
setter(key, value) {
uni.setStorageSync(key, value);
},
getter(key) {
return uni.getStorageSync(key);
},
});