页面刷新vuex数据消失问题解决方案,页面刷新vuex数据消失

  页面刷新vuex数据消失问题解决方案,页面刷新vuex数据消失

  本文主要介绍了如何解决vuex刷新数据消失的问题,具有很好的参考价值。希望对你有帮助。来和边肖一起看看吧。

  前言

  Vuex可能用在e构建的大型单页项目中,Vue的状态存储是响应式的。当VUE组件从存储中读取状态时,如果存储中的状态发生变化,相应的组件将相应地有效更新。

  但是有一个问题:vuex中存储的数据只在页面中,相当于我们定义的全局变量。刷新后,里面的数据会恢复到初始化状态。但有时候这种情况并不是我们想要的。

  例如,用户已经登录,我将登录状态置于状态。页面刷新一次,我还要重新登录?购物车里添加的数据要一刷新就重新添加?

  解决思路:

  监视页面是否刷新,如果是,将状态对象存储在sessionStorage/localStorage中。

  页面打开后,判断sessionStorage/localStorage中是否有状态对象。如果有,说明页面已经刷新。取出存储在sessionStorage/localStorage中的数据,并将其分配给vuex中的状态。

  如果不存在,说明是第一次打开,取vuex中定义的state的初始值。

  sessionStorage和localStorage介绍

  H5提供了我们常用的本地存储和会话存储。

  两者的区别:localStorage生命周期是永久的,这意味着除非用户清除浏览器提供的UI上的localStorage信息,否则该信息将永久存在。

  存储数据大小一般为5MB,只存储在客户端(即浏览器),不参与和服务器的通信。sessionStorage仅在当前会话中有效,关闭页面或浏览器后会被清除。

  存储数据大小一般为5MB,只存储在客户端(即浏览器),不参与和服务器的通信。

  源接口可以被再次接受或封装,以更好地支持对象和数组。浏览器支持:除了ie7及以下,其他所有标准浏览器都完全支持(ie和FF需要运行在web服务器中)

  localStorage和sessionStorage都有相同的操作方法,如setItem、getItem、removeItem、clear等。

  代码:

  项目目录结构:

  在项目(App.vue)的入口页面添加显示器刷新事件:

  名称:“应用程序”,

  已安装(){

  window . addevent listener( unload ,this.saveState)

  },

  方法:{

  saveState () {

  sessionStorage.setItem(state ,JSON.stringify(this。$store.state))

  }

  }

  store中可能会存储一些机密信息,所以不要一直把它保存在sessionStorage中。加载页面后,清除或删除指定的会话。

  window.addEventListener(load ,()={

  session storage . clear();

  });

  state.js:

  var state=session storage . getitem( state )?JSON . parse(session storage . getitem( state ):{

  计数:1,

  obj: {},

  arr: [1,2,3]

  }

  导出默认状态

  索引. js

  从“vue”导入Vue

  从“vuex”导入Vuex

  从导入状态。/州

  从导入突变。/突变

  从导入getters。/getters

  从导入操作。/操作

  Vue.use(Vuex)

  导出默认的新Vuex。商店({

  状态,

  突变,

  吸气剂,

  行动

  })

  mutations.js:

  导入{

  一些突变

  }来自。/mutation-types.js

  导出默认值{

  [某些_突变](状态){

  状态.计数

  }

  }

  突变类型. js

  export const SOME _ MUTATION= SOME _ MUTATION

  补充知识:vuex-along有效防止刷新页面后vuex中的数据重置

  1.vuex-along安装

  NPM I vuex-沿保存

  2.在存储目录的index.js文件中介绍它

  2.1

  从“vuex-along”导入{createVuexAlong}

  2.2正上方

  简单说明其中的含义:

  名称:“”

  //在这个块中,我存放了localstorage,表示localstorage的键值。

  local:{list:[userInfo],isFilter:true}

  //list:vuex中要过滤的数据,isFilter就是过滤userInfo,剩下的存放在localstorage。

  会话:假

  //对sessionstorage不做任何事情

  通过github:https://github.com/boenfu/vuex-along了解更多信息

  3.以上对vuex刷新数据消失问题的解决方案是边肖分享的全部内容。希望以后对你有帮助!也希望大家能支持我们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: