0.0.3 • Published 2 years ago

@no_idea/pinia-plugin-persistent v0.0.3

Weekly downloads
-
License
MIT
Repository
-
Last release
2 years ago

@no_idea/pinia-plugin-persistent

Usage

Install

pnpm install @no_idea/pinia-plugin-persistent

For example:

import { createPinia } from 'pinia';
import { createPersistedState } from '@no_idea/pinia-plugin-persistent/dist';

const store = createPinia();  

export default {
  install(app: App){
    app.use(store);
    store.use(createPersistedState());
  },
};
const initAuthModule = () => defineStore('auth',() => {
  const token = ref<string>();
  const user = ref<IAuthUser>();

  const setToken = (payload: string) => {
    token.value = payload;
  };

  const setUser = (payload: IAuthUser) => {
    user.value = payload;
  };


  return {
    token,
    setToken,
    user,
    setUser,
  };
},{
  'persist': true,
});

Configs

import type { StateTree,PiniaPluginContext } from 'pinia';
import type Storage from '@no_idea/utils/storage';

type RestoreFn = (content: PiniaPluginContext) => void;

// 加密解密方式
export interface Serializer {
  serialize: (value: StateTree) => string
  deserialize: (value: string) => StateTree
}

// 存储方法
export interface OtherStorage{
  getItem<T>(key: string): T
  setItem(key: string,value: any): void
}

export interface PersistedStateOptions {
  key?: string 
  storage?: Storage | OtherStorage
  paths?: string[] // 存储的key
  serializer?: Serializer // 加密解密方式
  beforeRestore?: RestoreFn  // 前置拦截
  afterRestore?: RestoreFn  // 后置拦截
}

type persist?: boolean | PersistedStateOptions

License

MIT