vuex实现数据持久化
场景分析:在实际项目开发过程中,如果公共数据比较多我们会使用vuex做公共状态管理,但是在对浏览器进行刷新操作的时候,会导致vuex内的数据丢失,这种情况有些时候是没问题的,但是有的时候我们需要某些数据可以持久化的保存,这样就需要做对应的处理,处理方式如下;
(注意:浏览器执行刷新操作的时候,页面内不是每个生命周期都会执行,而是只有部分生命周期会执行,执行顺序如下:beforeCreate, created, beforeMount, mounted, beforUpdate, updated)
1、利用浏览器的本地存储
实现原理就是在浏览器执行刷新操作的时候,利用storage对vuex中的数据进行中转暂存;
// 在页面根组件的created内进行数据中转、暂存处理; created(){ // 监听浏览器刷新事件,浏览器执行刷新时,刷新之前将vuex中的数据做暂存处理; window.addEventListener('beforeunload',()=>{ localStorage.setItem('store',JSON.stringify(this.$store.state)); }) // 刷新完成后会再次执行created等生命周期,所以这里判断如果本地存储内有对应数据则直接对vuex进行赋值处理 if(localStorage.getItem('store')){ // 注意:单纯的使用JSON.parse(JSON.stringify(...))会报错,所以此处使用replaceState进行赋值 this.$store.replaceState(Object.assign({},JSON.parse(localStorage.getItem('store')))); // 这里赋值之后及时清除本地存储内的数据,以免暴露某些敏感数据 localStorage.removeItem('store'); }; },
2、使用对应的持久化插件,比如vuex-persistedstate等;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!