監聽頁面是否刷新,如果頁面刷新了,將state對象存入到sessionStroage中。頁面打開之后,判斷sessionStorage中是否存在state對象,如果存在,則說明頁面是被刷新過,將sessionStorage中存的數據取出來,給vuex中的stage賦值,如果不存在,說明是第一次打開,則取vuex中定義的state初始值。
在App.vue中增加監聽刷新事件
export default { name: 'app', mounted() { //監聽刷新事件 window.addEventListener('unload',this.saveState); }, methods:{ //sessionStorage只能存入字符串,所以要先把數據轉成字符串 saveState(){ sessionStorage.setItem('state',JSON.stringify(this.$store.state)) } } }
修改store/index.js中的state
const state = sessionStorage.getItem('state')?JSON.parse(sessionStorage.getItem('state')):{ user:{ name:'' } }