vuex页面刷新数据丢失的解决办法

在vue项目中用vuex来做全局的状态管理, 发现当刷新网页后,保存在vuex实例store里的数据会丢失。

原因:

因为store里的数据是保存在运行内存中的,当页面刷新时,页面会重新加载vue实例,store里面的数据就会被重新赋值初始化

解决思路:

本质是在页面刷新的之前,把vuex里的state保存到sessionStorage里,然后store从sessionStorage里取

//App.vue

mounted(){
	window.addEventListener('unload',this.saveState)
},
methods: {
	saveState(){
		sessionStorage.setItem('state',JSON.stringify(this.$store.state));
	}
}
//store/index.js
const state = sessionStorage.getItem('state')?JSON.parse(sessionStorage.getItem('state')):{
	xxx
}

PS

当store使用模块化后(modules),上面就需要发生变化了

posted @ 2020-09-08 16:28  镇魂帆-张  阅读(207)  评论(0编辑  收藏  举报