https://www.jb51.net/article/138218.htm

1.原因

2.解决方法

localStorage没有时间期限,除非将它移除,sessionStorage即会话,当浏览器关闭时会话结束,有时间期限,具有自行百度

我这里使用sessionStorage,这里需要注意的是vuex中的变量是响应式的,而sessionStorage不是,当你改变vuex中的状态,组件会检测到改变,而sessionStorage就不会了,页面要重新刷新才可以看到改变,所以应让vuex中的状态从sessionStorage中得到,这样组件就可以响应式的变化

3.具体实现

应用背景是用户登入后保存状态,退出后移除状态

mutations.js

1
2
3
4
5
6
7
8
9
10
11
12
ADD_LOGIN_USER (state,data) { //登入,保存状态
 sessionStorage.setItem("username", data); //添加到sessionStorage
 sessionStorage.setItem("isLogin",true);
 state.username=data,  //同步的改变store中的状态
 state.isLogin=true
 },
 SIGN_OUT (state) { //退出,删除状态
 sessionStorage.removeItem("username"); //移除sessionStorage
 sessionStorage.removeItem("isLogin");
 state.username=''  //同步的改变story中的状态
 state.isLogin=false
 }

getters.js

1
2
3
4
5
6
7
isLogin (state) {
 if (!state.isLogin) {
  state.isLogin=sessionStorage.getItem('isLogin'); //从sessionStorage中读取状态
  state.username=sessionStorage.getItem('username');
 }
 return state.username
 }

总体的实现思路是让vuex中story的状态和sessionStorage保持一致(从sessionStorage取值)

4.后话

之前踩了一个大坑,没注意到vuex可以让组件响应式变化,让组件直接取了sessionStorage的值,弄的我还必须刷新才能看到退出后的效果。

补充:

下面看戏vuex存储和本地存储(localstorage、sessionstorage)的区别

1.最重要的区别:vuex存储在内存,localstorage则以文件的方式存储在本地

2.应用场景:vuex用于组件之间的传值,localstorage则主要用于不同页面之间的传值。

3.永久性:当刷新页面时vuex存储的值会丢失,localstorage不会。

注:很多同学觉得用localstorage可以代替vuex, 对于不变的数据确实可以,但是当两个组件共用一个数据源(对象或数组)时,如果其中一个组件改变了该数据源,希望另一个组件响应该变化时,localstorage无法做到,原因就是区别1。

总结

以上所述是小编给大家介绍的vuex在页面刷新后数据被清除问题的解决方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

使用sessionStorage解决vuex在页面刷新后数据被清除的问题的更多相关文章

  1. vue 使用localStorage解决vuex在页面刷新后数据被清除的问题

    通常,我们在使用vue编写页面时,会需要使用vuex在组件间传递(或者说共同响应)同一个数据的变化.例如:用户的登录信息. 下面,我们使用传递用户登录信息的例子来一步步解决这个问题. 首先,我们的第一 ...

  2. 【vue】使用localStorage解决vuex在页面刷新后数据被清除的问题

    通常,我们在使用vue编写页面时,会需要使用vuex在组件间传递(或者说共同响应)同一个数据的变化.例如:用户的登录信息. 下面,我们使用传递用户登录信息的例子来一步步解决这个问题. 首先,我们的第一 ...

  3. 解决vuex在页面刷新后数据丢失的问题

    一.原因 js代码是运行在内存中的,代码运行时的所有变量.函数也都是保存在内存中的. 刷新页面,以前申请的内存被释放,重新加载脚本代码,变量重新赋值,所以这些数据要想存储就必须存储在外部,例如:Loc ...

  4. Vuex 页面刷新后store保存的数据会丢失 取cookie值

    在store.js中 export default new vuex.Store({ // 首先声明一个状态 state state:{ pcid: '', postList: [], } //更新状 ...

  5. 解决移动端页面滚动后不触发touchend事件

    解决移动端页面滚动后不触发touchend事件 问题 在移动端页面进行优化时,一般使用touch事件替代鼠标相关事件.用的较多的是使用touchend事件替代PC端的click和mouseup事件. ...

  6. Html 页面刷新后出现闪动

    Html 页面刷新后,或跳转后,出现闪动,抖动问题 1.查看有没有用到新字体,新字体链接位置是否存在 如: @font-face { font-family: "AvantGarde-Dem ...

  7. vue通过路由传值及在页面刷新后如何保存值

    1.普通的路由跳转 方式一:通过routerLinkTo方式,转为a标签的跳转,to里面相当于a标签的href路径 如下: 方式二:通过this.$router.push方式: 如下: 2.带参数的路 ...

  8. 解决vuex数据页面刷新后初始化问题

    在vue项目的开发中经常会用到vuex来进行数据的存储,然而在开发过程中会出现刷新后页面的vuex的state数据初始化问题!下面是我用过的解决方法 利用storage缓存来实现vuex数据的刷新问题 ...

  9. 结合sessionStorage解决vuex页面刷新数据丢失的问题

    将需要保存在vuex中的数据同时保存在sessionStorage中即可: import Vue from 'vue'; import Vuex from 'vuex'; Vue.use(Vuex); ...

随机推荐

  1. sql server中根据地图经纬度算距离

    从别的地方烤过来的,自己试了一下,可以计算 出来,不过正确不正确的就不太懂了. USE [niaoren]GO/****** Object:  UserDefinedFunction [dbo].[f ...

  2. 调试web api的工具 谷歌插件 Restlet

    介绍 http://chromecj.com/productivity/2017-08/789.html

  3. 每日英语:The Benefits of a Sleep Buddy

    Stolen sheets, snoring and hot flashes are just some of the annoyances that lead a quarter of U.S. c ...

  4. Mybatis根据配置文件获取session(多数据源)

    1.config.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configura ...

  5. django model form 保存方法 django-rest-framework save 修改某一项值 方法

    django Model Form django-rest-framework save 方法 修改某个数据的值

  6. R语言统计分析应用与SAS、SPSS的比较

    能够用来做统计分析的软件和程序很多,目前应用比较广泛的包括:SPSS, SAS.R语言,Matlab,S-PLUS,S-Miner等.下面我们来看一下各应用的特点: SPSS: 最简单的,都是菜单操作 ...

  7. c++之五谷杂粮---1

    1.  位运算符,如果运算对象是带符号的且它的值为负,那么位运算符如何处理运算对象的“符号位”依赖于机器.此时左移操作可能会改变符号位的值,因此是一种UB. Best Practices: 关于符号位 ...

  8. mysql memory engine

    前言 刚刚遇到了mysql无法插入数据,报错:the table xxx is full. 查询原因,是xx表使用了memory engine,其中mysql的memory engine中有max_h ...

  9. Java基础篇--字符串处理(StringBuffer)

    字符串处理 在Java中最常将字符串作为String类型对象来处理.同时String中也提供了很多操作字符串的函数(可自行查阅资料),而本篇将介绍StringBuffer如何操作字符串. String ...

  10. python获取软件安装列表2222

    softer_installed_list ===================== 使用python编写的,获取本机软件安装列表,输出为html表格. * win7 32位环境下运行 * 使用的是 ...