pinia-plugin-persist-orm
v0.0.7
Published
Pinia plugin to persist stores
Downloads
4
Readme
pinia-plugin-persist-orm
Pinia plugin to persist stores
快速开始
- 使用你喜欢的包管理器:
- npm: npm i pinia-plugin-persist-orm
- pnpm: pnpm i pinia-plugin-persist-orm
- yarn: yarn add pinia-plugin-persist-orm
- 添加插件到pinia:
import { createPinia } from 'pinia';
import piniaPluginPersistORM from 'pinia-plugin-persist-orm';
const pinia = createPinia();
pinia.use(piniaPluginPersistORM);
配置
- 默认使用的
localStorage
, 修改如下:
// 全局修改
import { createPinia } from 'pinia';
import {piniaPluginPersistORM} from 'pinia-plugin-persist-orm';
const pinia = createPinia();
pinia.use(piniaPluginPersistORM({
// 在这里进行全局配置, 具体参考 types.d.ts 文件
}));
// 局部修改
import { defineStore } from "pinia";
export const useWktStore = defineStore('wkt', {
state: () => ({
// 类似于组件的 data, 用来存储全局状态
}),
getters:{
// 类似于组件的 computed, 封装计算属性, 有缓存功能
},
actions: {
// todo
// 类似于组件的 methods, 封装业务逻辑, 修改 state 等
},
persist: { // 开启持久化功能
// 指定持久化的容器, useStoreDB 是手动封装的操作 IndexedDB 的类(需要外部实现)
// 这个操作类需要实现基本的两个方法: getItem 和 setItem
storage: useStoreDB as unknown as Storage
}
});
说明
- 该插件是在
pinia-plugin-persistedstate
的基础之上得到的; - 由于
pinia-plugin-persistedstate
只支持localStorage
,sessionStorage
这两种持久化方式, 持久化的空间大小就有了限制; - 为了解决持久化空间大小的限制, 扩展了对
IndexedDB
支持; - 众所周知
IndexedDB
的所有操作都是异步的, 具体请查看; - 对操作
getItme
方法的方法进行了异步改造, 以对IndexedDB
的支持; - 可能需要是用
watch
或watchEffect
等Apis监听pinia仓库数据的变更, 这在刷新页面的时候很有效;