解决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 相关文章推荐
js利用Array.splice实现Array的insert/remove
Jan 13 Javascript
JavaScript的单例模式 (singleton in Javascript)
Jun 11 Javascript
JAVASCRIPT车架号识别/验证函数代码 汽车车架号验证程序
Jan 08 Javascript
jQuery中多个元素的Hover事件解决方案
Jun 12 Javascript
jQuery子窗体取得父窗体元素的方法
May 11 Javascript
JavaScript鼠标特效大全
Sep 13 Javascript
Bootstrap modal只加载一次数据的解决办法(推荐)
Nov 24 Javascript
jQuery pagination分页示例详解
Oct 23 jQuery
es6基础学习之解构赋值
Dec 10 Javascript
微信小程序点餐系统开发常见问题汇总
Aug 06 Javascript
js对象数组和对象的使用实例详解
Aug 27 Javascript
js实现时分秒倒计时
Dec 03 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
PHP运行模式的深入理解
2013/06/03 PHP
PHP用反撇号执行外部命令
2015/04/14 PHP
thinkPHP5.0框架模块设计详解
2017/03/18 PHP
PDO::inTransaction讲解
2019/01/28 PHP
ThinkPHP5&5.1框架关联模型分页操作示例
2019/08/03 PHP
分享10篇优秀的jQuery幻灯片制作教程及应用案例
2011/04/16 Javascript
stream.js 一个很小、完全独立的Javascript类库
2011/10/28 Javascript
jQuery ajax(复习)—Baidu ajax request分离版
2013/01/24 Javascript
浏览器复制插件zeroclipboard使用指南
2016/03/26 Javascript
jQuery基础的工厂函数以及定时器的经典实例分析
2016/05/20 Javascript
原生JS:Date对象全面解析
2016/09/06 Javascript
Three.js快速入门教程
2016/09/09 Javascript
详解Vue2 无限级分类(添加,删除,修改)
2017/03/07 Javascript
前端开发之CSS原理详解
2017/03/11 Javascript
JS控件bootstrap suggest plugin使用方法详解
2017/03/25 Javascript
jquery ztree实现右键收藏功能
2017/11/20 jQuery
Vue点击切换颜色的方法
2018/09/13 Javascript
新手入门带你学习JavaScript引擎运行原理
2019/06/24 Javascript
Node.js使用MongoDB的ObjectId作为查询条件的方法
2019/09/10 Javascript
ES2020 已定稿,真实场景案例分析
2020/05/25 Javascript
JavaScript实现alert弹框效果
2020/11/19 Javascript
JS+CSS实现动态时钟
2021/02/19 Javascript
[01:14]DOTA2亚洲邀请赛小组赛赛前花絮
2017/03/27 DOTA
Python中使用md5sum检查目录中相同文件代码分享
2015/02/02 Python
Python生成随机密码
2015/03/10 Python
分析并输出Python代码依赖的库的实现代码
2015/08/09 Python
在Python中利用pickle保存变量的实例
2019/12/30 Python
使用python turtle画高达
2020/01/19 Python
Django ModelForm操作及验证方式
2020/03/30 Python
css3实现冲击波效果的示例代码
2018/01/11 HTML / CSS
意大利消费电子产品购物网站:SLG Store
2019/12/26 全球购物
英文翻译的自我评价语句
2013/10/04 职场文书
遗体告别仪式答谢词
2014/01/23 职场文书
社区活动总结范文
2015/05/07 职场文书
值班管理制度范本
2015/08/06 职场文书
教学工作总结范文5篇
2019/08/19 职场文书