解决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 相关文章推荐
JAVASCRIPT style 中visibility和display之间的区别
Jan 22 Javascript
网页前台通过js非法字符过滤代码(骂人的话等等)
May 26 Javascript
Jquery 点击按钮显示和隐藏层的代码
Jul 25 Javascript
JQuery UI的拖拽功能实现方法小结
Mar 14 Javascript
Extjs的FileUploadField文件上传出现了两个上传按钮
Apr 29 Javascript
jQuery实现自定义checkbox和radio样式
Jul 13 Javascript
jQuery 调用WebService 实例讲解
Jun 28 Javascript
html+js+highcharts绘制圆饼图表的简单实例
Aug 04 Javascript
如何使用Vuex+Vue.js构建单页应用
Oct 27 Javascript
react开发中如何使用require.ensure加载es6风格的组件
May 09 Javascript
基于ionic实现下拉刷新功能
May 10 Javascript
微信小程序如何调用json数据接口并解析
Jun 29 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
松下Panasonic RF-B65电路分析
2021/03/02 无线电
php中在PDO中使用事务(Transaction)
2011/05/14 PHP
PHP连接MYSQL数据库的3种常用方法
2017/02/27 PHP
php7安装mongoDB扩展的方法分析
2017/08/02 PHP
动态的创建一个元素createElement及删除一个元素
2014/01/24 Javascript
轻松创建nodejs服务器(5):事件处理程序
2014/12/18 NodeJs
纯JS实现旋转图片3D展示效果
2015/04/12 Javascript
JQuery记住用户名密码实现下次自动登录功能
2015/04/27 Javascript
Vue.js列表渲染绑定jQuery插件的正确姿势
2017/06/29 jQuery
深入理解 JS 垃圾回收
2019/06/03 Javascript
JavaScript实现的开关灯泡点击切换特效示例
2019/07/08 Javascript
封装微信小程序http拦截器过程解析
2019/08/13 Javascript
JS精确判断数据类型代码实例
2019/12/18 Javascript
详解vue或uni-app的跨域问题解决方案
2020/02/21 Javascript
javascript设计模式 ? 抽象工厂模式原理与应用实例分析
2020/04/09 Javascript
[04:10]2018年度CS GO玩家最喜爱的主播-完美盛典
2018/12/16 DOTA
python常见数制转换实例分析
2015/05/09 Python
酷! 程序员用Python带你玩转冲顶大会
2018/01/17 Python
利用Python如何制作好玩的GIF动图详解
2018/07/11 Python
对Python3.6 IDLE常用快捷键介绍
2018/07/16 Python
python中的itertools的使用详解
2020/01/13 Python
python图形开发GUI库wxpython使用方法详解
2020/02/14 Python
Python run()函数和start()函数的比较和差别介绍
2020/05/03 Python
Pycharm如何导入python文件及解决报错问题
2020/05/10 Python
Django中FilePathField字段的用法
2020/05/21 Python
BeautifulSoup中find和find_all的使用详解
2020/12/07 Python
办公文员的工作岗位职责
2013/11/12 职场文书
工程业务员岗位职责
2013/12/31 职场文书
表彰大会主持词
2014/03/26 职场文书
2014年残联工作总结
2014/11/21 职场文书
2014年乡镇团委工作总结
2014/12/18 职场文书
今日说法观后感
2015/06/08 职场文书
2016国培研修心得体会
2016/01/08 职场文书
巾帼建功标兵先进事迹材料
2016/02/29 职场文书
python常见的占位符总结及用法
2021/07/02 Python
一小时学会TensorFlow2之基本操作2实例代码
2021/09/04 Python