vue-vben-admin
vue-vben-admin copied to clipboard
pinia-plugin-persistedstate在自定义Serializer(默认)情况不生效
const store = createPinia();
registerPiniaPersistPlugin(store);
export function setupStore(app: App<Element>) {
app.use(store);
}
export { store };
这是框架默认的配置
export const useNotifyStore = defineStore('notify',
....
persist: true,
store配置
能正常存储到localStorage
但是浏览器刷新(F5)就没了
然后刷新(F5)
根据https://github.com/vbenjs/vue-vben-admin/issues/3420 启用默认配置(即不使用自定义Serializer)是能正常工作的 刷新(F5)localstorege不会被清理
const store = createPinia();
// registerPiniaPersistPlugin(store);
// 使用默认
store.use(piniaPluginPersistedstate);
export function setupStore(app: App<Element>) {
app.use(store);
}
export { store };
是key的问题 不加key是正常的
/**
* Create Persisted State Options
* 创建持久化状态选项
*
* @param keyPrefix prefix for storage key 储存键前缀
* @returns persisted state factory options
*/
export function createPersistedStateOptions(keyPrefix: string): PersistedStateFactoryOptions {
return {
storage: localStorage,
//key: (id) => `${keyPrefix}__${id}`,
serializer: customSerializer(SHOULD_ENABLE_STORAGE_ENCRYPTION),
};
}
或者使用字面量
export function createPersistedStateOptions(keyPrefix: string): PersistedStateFactoryOptions {
return {
storage: localStorage,
key: (id) => `aaaa_${id}`,
serializer: customSerializer(SHOULD_ENABLE_STORAGE_ENCRYPTION),
};
}
问题在export const PERSIST_KEY_PREFIX = getCommonStoragePrefix();
直接去掉key或者用默认给一个string前缀 getCommonStoragePrefix使用env读取
具体就不知道什么原因了
This issue is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 7 days