【陪诊系统-PC管理端】vuex数据持久化实现

问题:

根据前面的功能步骤,虽然已经实现了动态路由添加,但是当重新刷新后,页面也出现暂时性空白。

究其根本,这是因为vuex中保存的数据不具有持久化,每次刷新会重建vue实例,而store是挂载是vue实例上的,所以刷新后state中的数据会被重新初始化。

解决办法

使用浏览器缓存,但这里为了简便使用vuex-persistedstate插件来实现,这个插件本质还是localstorage。附上插件介绍:vuex-persistedstate的核心功能是通过监听Vuex的mutation,将状态存储在浏览器的localStorage或sessionStorage中。当页面重新加载时,插件会从存储中恢复状态,从而实现状态的持久化。

使用步骤

1.在store实例中使用使用vuex-persistedstate,设置缓存的名称

javascript 复制代码
// 创建Store实例
export default createStore({
    //createPersistedstate()为了实现持久化,key的属性值是缓存的名称
    plugins: [new createPersistedstate({
        key: 'pz_v3pz'
    })],
    modules: {
        // 每个模块有自己的statte mutation
        menu
    }
})

2.将浏览器缓存中的值取出来还是一样用localStorage.getItem

javascript 复制代码
const localData = localStorage.getItem('pz_v3pz')
// 如果保存的持久化pz_v3pz存在 就从本地存储读取
const state = localData ? localData.menu : {
    // 展开状态
    isCollapse: false,
    // 展开的菜单
    selectMenu: [],
    routerList: [],
    menuActive: '1-1'
}

that's all

相关推荐
张就是我1065921 小时前
DOMPurify 的一个漏洞:你以为 {} 是空的?
前端
浮生望2 小时前
JS字符串与回文算法:从包装类到双指针的面试进阶之路
javascript·算法
疯狂的魔鬼2 小时前
一套 Schema 驱动四视图:记 useCrudSchemas 的设计与实践
前端·javascript·typescript
风骏时光牛马2 小时前
大模型开发工具高频故障与实操问题汇总代码案例大全
前端
没落英雄2 小时前
2. 让 Agent 能读写文件、执行命令 —— LocalShellBackend 实战
前端·人工智能·架构
白雾茫茫丶2 小时前
探索 Nuxt.js 全栈能力:用 Better-Auth 打造类型安全的 RBAC 权限系统
前端·vue.js·nuxt.js
奇奇怪怪的2 小时前
检索增强——混合检索、Re-rank 与 Query 优化
前端
user62229864925812 小时前
React 常用技术知识全景:从组件到 Hooks 的系统理解
前端
麻辣凉茶2 小时前
给阿嬤一封来自云端的信(上)
前端·node.js