使用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 相关文章推荐
JS 实现双色表格实现代码
Nov 24 Javascript
JavaScript的类型简单说明
Sep 03 Javascript
再论Javascript的类继承
Mar 05 Javascript
使用javascript为网页增加夜间模式
Jan 26 Javascript
jquery通过visible来判断标签是否显示或隐藏
May 08 Javascript
jQuery实现按键盘方向键翻页特效
Mar 18 Javascript
javascript实现2016新年版日历
Jan 25 Javascript
15个值得开发人员关注的jQuery开发技巧和心得总结【经典收藏】
May 25 Javascript
AngularJS递归指令实现Tree View效果示例
Nov 07 Javascript
Spring shiro + bootstrap + jquery.validate 实现登录、注册功能
Jun 02 jQuery
jQuery 利用ztree实现树形表格的实例代码
Sep 27 jQuery
编写v-for循环的技巧汇总
Dec 01 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语法(2)
2006/10/09 PHP
PHP中10个不常见却非常有用的函数
2010/03/21 PHP
基于xcache的配置与使用详解
2013/06/18 PHP
php preg_match的匹配不同国家语言实例
2016/12/29 PHP
php插入mysql数据返回id的方法
2018/05/31 PHP
laravel框架中路由设置,路由参数和路由命名实例分析
2019/11/23 PHP
jquery中的$(document).ready()使用小结
2014/02/14 Javascript
DOM节点的替换或修改函数replaceChild()用法实例
2015/01/12 Javascript
javascript中的 object 和 function小结
2016/08/14 Javascript
利用Angularjs和Bootstrap前端开发案例实战
2016/08/27 Javascript
详解MVC如何使用开源分页插件(shenniu.pager.js)
2016/12/16 Javascript
AngularJs定时器$interval 和 $timeout详解
2017/05/25 Javascript
详解Vuejs2.0 如何利用proxyTable实现跨域请求
2017/08/03 Javascript
详解如何使用webpack+es6开发angular1.x
2017/08/16 Javascript
关于vue-router的beforeEach无限循环的问题解决
2017/09/09 Javascript
微信小程序自定义弹窗wcPop插件
2018/11/19 Javascript
js时间转换毫秒的实例代码
2019/08/21 Javascript
深入理解Antd-Select组件的用法
2020/02/25 Javascript
python基础教程之自定义函数介绍
2014/08/29 Python
在Python的Django框架下使用django-tagging的教程
2015/05/30 Python
python爬取cnvd漏洞库信息的实例
2019/02/14 Python
简单了解python代码优化小技巧
2019/07/08 Python
基于python实现文件加密功能
2020/01/06 Python
Python classmethod装饰器原理及用法解析
2020/10/17 Python
html5构建触屏网站之网站尺寸探讨
2013/01/07 HTML / CSS
html5+svg学习指南之SVG基础知识
2014/12/17 HTML / CSS
HTML5 移动页面自适应手机屏幕四类方法总结
2017/08/17 HTML / CSS
德国婴儿服装和婴儿用品购买网站:Baby Sweets
2019/12/08 全球购物
临床护理求职信
2014/04/26 职场文书
三好学生先进事迹材料
2014/08/28 职场文书
“四风”问题的主要表现和危害思想汇报
2014/09/19 职场文书
寝室长工作失责检讨书
2014/10/06 职场文书
临床医学生职业规划书范文
2014/10/25 职场文书
运动会加油稿50字
2015/07/21 职场文书
mysql对于模糊查询like的一些汇总
2021/05/09 MySQL
Java实现多文件上传功能
2021/06/30 Java/Android