pinia持久化存储

321 阅读1分钟

pinia持久化存储

​ 最近使用了pinia代替vuex,它和vuex一样,默认也是非持久化储存,刷新页面会丢失更新后的值。

​ store/index.ts代码:持久化储存可以使用三方插件,快捷简单方便奈斯。

#store/index.ts
import { createPinia } from 'pinia'
import piniaPersist from 'pinia-plugin-persist'; //持久化存储,需要安装对应依赖
const pinia = createPinia();//持久化使用
pinia.use(piniaPersist);//持久化使用
export default pinia;//持久化使用

// const store = createPinia(); 非持久化使用
// export default pinia;非持久化使用

​ store/user.ts代码:如果按照默认使用方法,在上面引入持久化插件后默认所有的store的值都是持久化的。

import { defineStore } from 'pinia';
//userInfo、token、tst都会默认存储在localstorage里面。
export const useUserStore = defineStore('user', {
  state: () => {
    return {
      userInfo: {
        name: 'zhangsan',
        age: 23,
      },
      token: 'S1',
      tst: '22',
    };
  }
});

​ 我们可以根据对应的数据来决定是否持久化储存、或者存储到sessionstorage里面。

import { defineStore } from 'pinia';
export const useUserStore = defineStore('user', {
  state: () => {
    return {
      userInfo: {
        name: 'zhangsan',
        age: 23,
      },
      token: 'S1',
      tst: '22',
    };
  },
   persist: {
    enabled: true,
    strategies: [
      {
        key: 'userToken',//localstorage的key
        storage: localStorage,//储存位置
        paths: ['token', 'tst'],//需要储存的值,可以多个
      },
      {
        key: 'userInfo',
        storage: localStorage,
        paths: ['userInfo'],
      },
    ],
  },
});

​ 搞定!