vue-vben-admin icon indicating copy to clipboard operation
vue-vben-admin copied to clipboard

pinia-plugin-persistedstate在自定义Serializer(默认)情况不生效

Open imdap opened this issue 1 year ago • 1 comments

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)就没了 image 然后刷新(F5) image

根据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 };

image

imdap avatar Feb 02 '24 08:02 imdap

是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读取 具体就不知道什么原因了

imdap avatar Feb 05 '24 07:02 imdap

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

anncwb avatar Apr 09 '24 01:04 anncwb