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']
}
]
}