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

2020-07-23  本文已影响0人  随笔记呀

     Vuex是一个专为Vue.js应用程序开发的状态管理模式,采用集中式管理存储管理应用的所有组件的状态。但是当刷新页面的时候,保存在Vuex实例store的数据会丢失。

    原因就是:

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

    解决方法:
方法一:

state的数据保存在localstorage,sessionstoragecookie中。

export default {
  name: 'App',
  created () {
    //在页面加载时读取sessionStorage里的状态信息
    if (sessionStorage.getItem("state") ) {
        this.$store.replaceState(Object.assign({}, this.$store.state,JSON.parse(sessionStorage.getItem("state"))))
    } 

    //在页面刷新时将vuex里的信息保存到sessionStorage里
    window.addEventListener("beforeunload",()=>{
        sessionStorage.setItem("state",JSON.stringify(this.$store.state))
    })
  }

localStorage,sessionStorage,cookie三者的区别:

方法二:

    使用vuex-persistedstate,可以自动存储。

npm install --save vuex-persistedstate
在store.js中引入
import createPersistedState from 'vuex-persistedstate'

export default new Vuex.Store({

  //配置
  plugins: [createPersistedState()]
})

默认的是存储到localStorage里的,我们也可以存到sessionStorage中,如:

import createPersistedState from 'vuex-persistedstate'

export default new Vuex.Store({

  //配置
  plugins: [createPersistedState({
   storage: window.sessionStorage
  })]
})
上一篇 下一篇

猜你喜欢

热点阅读