vuex在刷新页面时数据清空

今天在使用vuex管理数据时,发现页面刷新后数据清空了。后来查了些资料,发现vuex的数据是存储在内存中,页面刷新时,内存将会被释放,并会重新加载js脚本,变量重新赋值。所以如果想要做到数据持久化,就需要将数据存储在localstorage,seassionstorage或者cookie里。
例如:

//在store/index.js中修改如下
state: sessionStorage.getItem('state') ? JSON.parse(sessionStorage.getItem('state')) : {
    //states
  },
//在APP.vue中添加如下
  mounted() {
    window.addEventListener("unload", this.saveState);
  },
  methods: {
    saveState() {
      sessionStorage.setItem("state", JSON.stringify(this.$store.state));
    },
  },

以上方法的思想就是监听页面刷新,一旦刷新就将数据保存到本地,vuex会根据本地state重新渲染state,从而实现数据持久化。但是这种方式并不建议使用。因为如果vuex里的数据太多而且都保存至本地是不现实的,因为本地存储空间是有限制的,我们需要根据实际情况,具体分析哪些数据需要做数据持久化。这非常重要!!
所以如果我们需要对一些不太重要的数据可以直接将他存入本地,而不需要存储在vuex中。这里还有值得注意的点,在本地数据中存储的数据是可以看见的,那么相对而言他的安全性并不高。

总之具体情况具体分析,看自己的实际要求决定数据是否需要做数据持久化。


版权声明:本文为m0_45309753原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。