vuex的主要做用是组件之间的通讯以及对数据进行中心化管理。javascript
可是因为vuex中的数据是存在运行内存中的,因此当咱们刷新页面的时候会致使store中的数据清空。vue
怎么解决这个问题呢?java
咱们能够使用传统的存储方式将store中的数据存起来,好比cookie、localstorage或者sessionstorage,这样刷新页面数据也不会丢失了。vuex
只是为了保留浏览器刷新前的数据,因此咱们选用sessionstorage,这样关闭浏览器,存储的数据就会被清空,不会产生重复数据。 浏览器
具体实现思路是这样的,咱们监听页面刷新事件,在刷新前将store中的数据存sessionstorge中。每次进入页面的时候先读取sessionstorage中的值并把它赋给store,这样就保留了刷新前的数据。
cookie
export default {
name: 'App',
created () {
if (sessionStorage.getItem("store") ) { //页面加载前读取sessionStorage里的状态信息
this.$store.replaceState(Object.assign({}, this.$store.state,JSON.parse(sessionStorage.getItem("store"))))
}
window.addEventListener("beforeunload",()=>{ //在页面刷新前将vuex里的信息保存到sessionStorage里
sessionStorage.setItem("store",JSON.stringify(this.$store.state))
})
}
}复制代码