persist.ts 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. /**
  2. * Pinia Persist Plugin
  3. * Pinia 持久化插件
  4. * @link https://prazdevs.github.io/pinia-plugin-persistedstate/zh/guide/
  5. *
  6. */
  7. import type { Pinia } from 'pinia';
  8. import { createPersistedState } from 'pinia-plugin-persistedstate';
  9. import type { PersistedStateFactoryOptions } from 'pinia-plugin-persistedstate';
  10. import { getCommonStoragePrefix } from '@/utils/env';
  11. export const PERSIST_KEY_PREFIX = getCommonStoragePrefix();
  12. // TODO customSerializer
  13. /**
  14. * Register Pinia Persist Plugin
  15. * 注册 Pinia 持久化插件
  16. *
  17. * @param pinia Pinia instance Pinia 实例
  18. */
  19. export function registerPiniaPersistPlugin(pinia: Pinia) {
  20. pinia.use(createPersistedState(createPersistedStateOptions(PERSIST_KEY_PREFIX)));
  21. }
  22. /**
  23. * Create Persisted State Options
  24. * 创建持久化状态选项
  25. *
  26. * @param keyPrefix prefix for storage key 储存键前缀
  27. * @returns persisted state factory options
  28. */
  29. export function createPersistedStateOptions(keyPrefix: string): PersistedStateFactoryOptions {
  30. return {
  31. storage: localStorage,
  32. key: (id) => `${keyPrefix}__${id}`,
  33. };
  34. }