| 1234567891011121314151617181920212223242526272829303132333435363738 |
- // https://pinia.vuejs.org/
- import { createPinia,PiniaPlugin,PiniaPluginContext } from 'pinia';
- import { toRaw } from 'vue'
- import {Session} from '/@/utils/storage';
- // 数据存储本地
- const setStorage = (key: string, value: any) => {
- Session.set(key,value)
- // sessionStorage.setItem(key, JSON.stringify(value))
- }
- // 获取本地数据
- const getStorage = (key: string) => {
- return Session.get(key)
- }
- const piniaPlugin = (context: PiniaPluginContext) => {
- const { store } = context;
- // $subscribe state值发生变化时会执行传入的回调
- store.$subscribe(() => {
- // 每次修改值的时候更新localStorage数据
- setStorage(`piniaKey-${store.$id}`, toRaw(store.$state))
- })
- // 每次构建项目的时候从本地存储取值
- const data = getStorage(`piniaKey-${store.$id}`)
- // 并将取的值赋给state
- return {
- ...data
- }
- }
- // 创建
- const pinia = createPinia();
- pinia.use(piniaPlugin);
- // 导出
- export default pinia;
|