vuex管理状态 刷新页面保持不被清空的解决方案

时间:2021-05-26

mutation文件

import { RECEIVE_PUBLICHTIT} from './mutation-types' //保证刷新页面数据不消失*function storeLocalStore (state) { window.localStorage.setItem("publicTit",JSON.stringify(state));} export default { [RECEIVE_PUBLICHTIT] (state,{title}){ state.publicTit = title storeLocalStore(state) }}

用到publicTit属性的组件

created(){ localStorage.getItem("publicTit")&&this.$store.replaceState(JSON.parse(localStorage.getItem("publicTit"))) },

在created()生命周期中进行取值操作,这时需要判断第一次加载项目的时,localStorage没有publicTit的信息,所以先判断一下

实现思路 让vuex中publicTit的状态和localStorage中保持一致(从localStorage中取值)

优化版:

需要调用属性的组件

created(){ //在页面加载时读取localStorage状态 复制对象是解决新vuex管理的状态中新添加的字段也可以存入localStorage中 localStorage.getItem("publicTit") && this.$store.replaceState(Object.assign(this.$store.state,JSON.parse(localStorage.getItem("publicTit")))); //在页面刷新时将vuex里的信息保存到localStorage里,避免多次调用localStorage进行存储降低性能,beforeunload是在页面刷新之前调用 window.addEventListener("beforeunload",()=>{ localStorage.setItem("publicTit",JSON.stringify(this.$store.state)) }) }

以上这篇vuex管理状态 刷新页面保持不被清空的解决方案就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章