使用sessionStorage解决vuex在页面刷新后数据被清除的问题


Posted in Javascript onApril 13, 2018

1.原因

使用sessionStorage解决vuex在页面刷新后数据被清除的问题

2.解决方法

使用sessionStorage解决vuex在页面刷新后数据被清除的问题

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

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

3.具体实现

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

mutations.js

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

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在页面刷新后数据被清除问题的解决方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
重载toString实现JS HashMap分析
Mar 13 Javascript
JavaScript返回网页中超链接数量的方法
Apr 03 Javascript
原生js实现autocomplete插件
Apr 14 Javascript
JavaScript如何实现跨域请求
Aug 05 Javascript
jquery获取table指定行和列的数据方法(当前选中行、列)
Nov 07 Javascript
微信小程序支付之c#后台实现方法
Oct 19 Javascript
jQuery中库的引用方法
Jan 06 jQuery
详解html-webpack-plugin用法全解
Jan 22 Javascript
layDate日期控件使用方法详解
Nov 15 Javascript
JavaScript中AOP的实现与应用
May 06 Javascript
如何正确解决VuePress本地访问出现资源报错404的问题
Dec 03 Vue.js
js定时器出现第一次延迟的原因及解决方法
Jan 04 Javascript
如何编写一个d.ts文件的步骤详解
Apr 13 #Javascript
VSCode中如何利用d.ts文件进行js智能提示
Apr 13 #Javascript
Vue2.0 实现单选互斥的方法
Apr 13 #Javascript
Vue render深入开发讲解
Apr 13 #Javascript
用vue2.0实现点击选中active其他选项互斥的效果
Apr 12 #Javascript
vue组件的写法汇总
Apr 12 #Javascript
jQuery实现文件编码成base64并通过AJAX上传的方法
Apr 12 #jQuery
You might like
php调用mysql存储过程实例分析
2014/12/29 PHP
php使用pclzip类实现文件压缩的方法(附pclzip类下载地址)
2016/04/30 PHP
PHP基于phpqrcode类生成二维码的方法详解
2018/03/14 PHP
phpstudy隐藏index.php的方法
2020/09/21 PHP
JS命名空间的另一种实现
2013/08/09 Javascript
div模拟选择框示例代码
2013/11/03 Javascript
javascript控制Div层透明属性由浅变深由深变浅逐渐显示
2013/11/12 Javascript
JavaScript删除指定子元素代码实例
2015/01/13 Javascript
Underscore.js 1.3.3 中文注释翻译说明
2015/06/25 Javascript
js支持键盘控制的左右切换立体式图片轮播效果代码分享
2015/08/26 Javascript
全面详细的jQuery常见开发技巧手册
2016/02/21 Javascript
js利用for in循环获取 一个对象的所有属性以及值的实例
2017/03/30 Javascript
30分钟精通React今年最劲爆的新特性——React Hooks
2019/03/11 Javascript
vue项目中将element-ui table表格写成组件的实现代码
2019/06/12 Javascript
[08:44]DOTA2发布会群星聚首 我们都是刀塔人
2014/03/21 DOTA
[54:30]Liquid vs Newbee 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Python判断文件和文件夹是否存在的方法
2015/05/21 Python
python多线程方式执行多个bat代码
2016/06/07 Python
Python利用IPython提高开发效率
2016/08/10 Python
打包发布Python模块的方法详解
2016/09/18 Python
基于django 的orm中非主键自增的实现方式
2020/05/18 Python
Fashion Eyewear美国:英国线上设计师眼镜和太阳镜的零售商
2016/08/15 全球购物
高中毕业自我鉴定
2013/12/22 职场文书
师范学院毕业生求职信范文
2013/12/26 职场文书
打架检讨书100字
2014/01/08 职场文书
寄语学生的话
2014/04/10 职场文书
本科生导师推荐信范文
2014/05/18 职场文书
上课不认真检讨书
2014/09/17 职场文书
刑事案件上诉状
2015/05/23 职场文书
学生会干部任命书
2015/09/21 职场文书
话题作文之诚信
2019/11/28 职场文书
话题作文之财富(600字)
2019/12/03 职场文书
python 破解加密zip文件的密码
2021/04/22 Python
Mysql官方性能测试工具mysqlslap的使用简介
2021/05/21 MySQL
mysql中整数数据类型tinyint详解
2021/12/06 MySQL
vue项目proxyTable配置和部署服务器
2022/04/14 Vue.js