使用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 相关文章推荐
select组合框option的捕捉实例代码
Sep 30 Javascript
兼容IE、FireFox、Chrome等浏览器的xml处理函数js代码
Nov 30 Javascript
Thinkphp模板没有解析直接原样输出的解决方法
Oct 31 Javascript
js代码验证手机号码和电话号码是否合法
Jul 30 Javascript
js实现显示当前状态的导航效果代码
Aug 28 Javascript
JavaScript & jQuery完美判断图片是否加载完毕
Jan 08 Javascript
原生JS实现圣旨卷轴展开效果
Mar 06 Javascript
自带气泡提示的vue校验插件(vue-verify-pop)
Apr 07 Javascript
JavaScript字符串_动力节点Java学院整理
Jun 27 Javascript
jQuery实现腾讯信用界面(自制刻度尺)样式
Aug 15 jQuery
jQuery UI 实例讲解 - 日期选择器(Datepicker)
Sep 18 jQuery
在vue中把含有html标签转为html渲染页面的实例
Oct 28 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日期时间函数的高级应用技巧
2009/05/16 PHP
向当前style sheet中插入一个新的style实现方法
2013/04/01 Javascript
script标签属性用type还是language
2015/01/21 Javascript
javascript包装对象实例分析
2015/03/27 Javascript
浅谈javascript中的DOM方法
2015/07/16 Javascript
javascript每日必学之条件分支
2016/02/17 Javascript
jQuery延迟执行的实现方法
2016/12/21 Javascript
vue.js从安装到搭建过程详解
2017/03/17 Javascript
JS解析url查询参数的简单代码
2017/08/06 Javascript
DVA框架统一处理所有页面的loading状态
2017/08/25 Javascript
jquery+css3实现熊猫tv导航代码分享
2018/02/12 jQuery
Vue实现远程获取路由与页面刷新导致404错误的解决
2019/01/31 Javascript
VSCode插件安装完成后的配置(常用配置)
2020/08/24 Javascript
Javascript节流函数throttle和防抖函数debounce
2020/12/03 Javascript
Python实现计算文件夹下.h和.cpp文件的总行数
2015/04/23 Python
Python基本语法经典教程
2016/03/11 Python
python 捕获 shell/bash 脚本的输出结果实例
2017/01/04 Python
名片管理系统python版
2018/01/11 Python
浅谈pandas中Dataframe的查询方法([], loc, iloc, at, iat, ix)
2018/04/10 Python
好的Python培训机构应该具备哪些条件
2018/05/23 Python
在Python中表示一个对象的方法
2019/06/25 Python
详解pandas.DataFrame.plot() 画图函数
2020/06/14 Python
python中的unittest框架实例详解
2021/02/05 Python
css3学习系列之移动属性详解
2017/07/04 HTML / CSS
html5记忆翻牌游戏实现思路及代码
2013/07/25 HTML / CSS
HTML5单页面手势滑屏切换原理分析
2017/07/10 HTML / CSS
Canvas获取视频第一帧缩略图的实现
2020/11/11 HTML / CSS
西班牙太阳镜品牌:Hawkers
2018/03/11 全球购物
Notino罗马尼亚网站:购买香水和化妆品
2019/07/20 全球购物
视光学专业毕业生推荐信
2013/10/28 职场文书
电台实习生求职信
2014/02/25 职场文书
群众路线查摆问题及整改措施
2014/10/10 职场文书
2014年单位法制宣传日活动总结
2014/11/01 职场文书
2014年行政工作总结
2014/11/19 职场文书
python requests模块的使用示例
2021/04/07 Python
Python Parser的用法
2021/05/12 Python