Pinia持久化存储【插件】

569 阅读1分钟

1 前言

  • 本文使用 Pinia 及插件 pinia-plugin-persist 做持久化存储,避免修改 store 后还需要手动修改 storage
  • 本文弃用插件 pinia-plugin-persistedstate,该插件无法配置一个 store 中的变量分别存储于 localStorage 和 sessionStorage

一、安装插件

npm i pinia-plugin-persist --save

二、main.ts中装载插件

import { createApp } from 'vue'
import App from './App.vue'
import { createPinia } from 'pinia'
import piniaPersist from 'pinia-plugin-persist'

const app = createApp(App);
const pinia = createPinia();
pinia.use(piniaPersist);
app.use(store)
  .use(pinia)
  .mount('#app')

三、store/index.ts

export const useUserStore = defineStore({
  id: 'user',

  state: () => {
    return {
      name: '张三'
    }
  },
  
  // 开启数据缓存
  persist: {
    enabled: true
  }
})

四、自定义 key

数据默认存在 localStorage 里,并且会以 store 的 id 作为 key。

persist: {
  enabled: true,
  strategies: [
    {
      key: 'my_user',
      storage: localStorage,
    }
  ]
}

五、持久化局部 state

默认所有 state 都会进行缓存,你能够通过 paths 指定要长久化的字段,其余的则不会进行长久化。

state: () => {
  return {
    name: '张三',
    age: 18,
    gender: '男'
  }  
},

persist: {
  enabled: true,
  strategies: [
    {
      storage: localStorage,
      paths: ['name', 'age']
    }
  ]
}