解决VUEX刷新的时候出现数据消失


Posted in Javascript onJuly 03, 2017

通常,我们在使用vue编写页面时,会需要使用vuex在组件间传递(或者说共同响应)同一个数据的变化。例如:用户的登录信息。

下面,我们使用传递用户登录信息的例子来一步步解决这个问题。

首先,我们的第一个问题是:我在一个组件(例如登录组件页面)中登录了后,其它页面要怎么获取和响应这个变化?(就是这么小白,/(ㄒoㄒ)/~~)

这个答案就是使用vuex啦,在中文版的文档中有这样一句话:

解决VUEX刷新的时候出现数据消失

而这里的计算属性就是我们的伟大的computed属性啦~

(至于前面的通过mutation之类的把数据存入vuex中的过程就省略了,大家上网搜一下例子一大堆,切忌做伸手党哦~)

至于用在我们的用户登录的例子中就像是下面这样:

解决VUEX刷新的时候出现数据消失

这样我们就可以在页面根据用户信息响应式地显示内容了。

那么,我们的第二个问题来了:我是获取到了vuex中的用户信息,但是我一刷新就没有了!!怎么办??在线等!十万火急!!

这个答案就是使用localStorage啦。(了解过html 5的同学应该都知道它,这里我就不科普了。)

一开始我虽然知道可以用localStorage,但是对于使用的逻辑有点乱,所以在这里记一下。

1、在vuex获取到用户信息时(例:state.user_id = user_info.user_id),同时把这个信息存入localStorage(Lockr.set('user_id', state.user_id) 这个Lockr是我用了一个叫Lockr的东西,其实它就是localStorage而已,关于它详细的请看https://github.com/tsironis/lockr);

2、我们定义一个mutation方法,再次把数据从localStorage传给state;

3、我们的问题发生在页面刷新时,可能很多同学就会去想在监听页面刷新事件时触发上面第2步的那个方法。其实不用这么麻烦,在computed属性时,只要我们判断一下用户信息是否为空,为空时调用第2步的那个方法就好了,然后我们把这个state return给那个响应属性就好了;

4、至于为什么这么麻烦在state和localStorage中传来传去,是因为state的值刷新后会没了,而localStorage的值不能响应式地变化(Vue 仅可以对其管理的数据做响应式处理,可以理解为 data 中的数据,localStorage 并不在 Vue 的管理下,自然不会有响应特性);

下面直接上computed处的代码:

解决VUEX刷新的时候出现数据消失

以上就是使用localStorage解决vuex的state的值在刷新之后没有了这个问题的方法。

方法二:

在mount里面commit一次

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
在网页中使用document.write时遭遇的奇怪问题
Aug 24 Javascript
用jquery与css打造个性化的单选框和复选框
Oct 20 Javascript
easyui Droppable组件实现放置特效
Aug 19 Javascript
贴近用户体验的Jquery日期、时间选择插件
Aug 19 Javascript
jQuery插件简单学习实例教程
Jul 01 Javascript
BootStrap Table对前台页面表格的支持实例讲解
Dec 22 Javascript
JS多文件上传的实例代码
Jan 11 Javascript
js实现兼容PC端和移动端滑块拖动选择数字效果
Feb 16 Javascript
angular.JS实现网页禁用调试、复制和剪切
Mar 31 Javascript
jQuery实现的粘性滚动导航栏效果实例【附源码下载】
Oct 19 jQuery
jQuery实现的3D版图片轮播示例【滑动轮播】
Jan 18 jQuery
ECharts地图绘制和钻取简易接口详解
Jul 12 Javascript
vue.js学习之UI组件开发教程
Jul 03 #Javascript
用js将long型数据转换成date型或datetime型的实例
Jul 03 #Javascript
Vue.js实例方法之生命周期详解
Jul 03 #Javascript
基于Vuejs和Element的注册插件的编写方法
Jul 03 #Javascript
Async Validator 异步验证使用说明
Jul 03 #Javascript
在vue-cli脚手架中配置一个vue-router前端路由
Jul 03 #Javascript
Require.js的基本用法详解
Jul 03 #Javascript
You might like
关于PHP5 Session生命周期介绍
2010/03/02 PHP
Zend Framework教程之Loader以及PluginLoader用法详解
2016/03/09 PHP
浅析JavaScript中的常用算法与函数
2013/11/21 Javascript
jquery 取子节点及当前节点属性值
2014/07/25 Javascript
js创建对象的方式总结
2015/01/10 Javascript
简单的jQuery入门指引
2015/07/28 Javascript
JavaScript基本语法学习教程
2016/01/14 Javascript
理解javascript异步编程
2016/01/27 Javascript
使用jQuery处理AJAX请求的基础学习教程
2016/05/10 Javascript
详解jQuery中的deferred对象的使用(一)
2016/05/27 Javascript
纯JS前端实现分页代码
2016/06/21 Javascript
详解vue.js移动端导航navigationbar的封装
2017/07/05 Javascript
基于jQuery ztree实现表格风格的树状结构
2018/08/31 jQuery
微信小程序实现搜索历史功能
2020/03/26 Javascript
详解vuex的简单todolist例子
2019/07/14 Javascript
[01:01:29]2018DOTA2亚洲邀请赛 4.4 淘汰赛 VP vs Liquid 第一场
2018/04/05 DOTA
[54:05]DOTA2-DPC中国联赛定级赛 SAG vs iG BO3第一场 1月9日
2021/03/11 DOTA
Python实现查找系统盘中需要找的字符
2015/07/14 Python
Python的Flask框架中配置多个子域名的方法讲解
2016/06/07 Python
numpy中实现二维数组按照某列、某行排序的方法
2018/04/04 Python
pandas groupby 分组取每组的前几行记录方法
2018/04/20 Python
python 画出使用分类器得到的决策边界
2019/08/21 Python
使用CSS3 制作一个material-design 风格登录界面实例
2016/12/12 HTML / CSS
CSS3自定义滚动条样式 ::webkit-scrollbar的示例代码详解
2020/06/01 HTML / CSS
Hudson Jeans官网:高级精制牛仔裤
2018/11/28 全球购物
颇特女士香港官网:NET-A-PORTER香港
2021/03/08 全球购物
大学生物业管理求职信
2013/10/24 职场文书
初中生学习生活的自我评价
2013/11/20 职场文书
幼师自我鉴定
2014/02/01 职场文书
记帐员岗位责任制
2014/02/08 职场文书
高中微机老师自我鉴定
2014/02/16 职场文书
2014年大学生工作总结
2014/11/20 职场文书
2015年项目工作总结
2015/04/29 职场文书
2015年城市管理工作总结
2015/05/23 职场文书
Java Kafka 消费积压监控的示例代码
2021/07/01 Java/Android
解决vue自定义组件@click点击失效问题
2022/04/30 Vue.js