Skip to content

仓库

更新: 2025/3/27 20:34:02 字数: 0 字

Pinia 持久化

主要是要想好何时进行读取何时进行存储。

js
import piniaPluginPersistedstate from "./persistPlugin.js"
const store = createPinia()
// 使用插件
store.use(piniaPluginPersistedstate)
export default store
js
const PINIA_KEY = "pinia_store"
export default function(context){
    console.log(context);

    const {store} = context

    // 仓库 id 和固定 key 组成唯一的键
    const KEY = PINIA_KEY + store.$id;

    // 当浏览器窗口关闭或者刷新时,会触发 beforeunload 事件
    // 存储 
    window.addEventListener('beforeunload', () => {
        localStorage.setItem(KEY, JSON.stringify(store.$state));
    })

    // 读取
    try {
        const localData = localStorage.getItem(KEY);
        if(localData){
            // 解析将数据放回到仓库中
            store.$patch(JSON.parse(localData))
        }
    } catch{
        console.log("本地存储数据异常")
    }
}

道友再会.