解决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 相关文章推荐
让firefox支持IE的一些方法的javascript扩展函数代码
Jan 02 Javascript
jQuery学习笔记之DOM对象和jQuery对象
Dec 22 Javascript
基于JQuery实现的Select级联
Jan 27 Javascript
javascript正则表达式参数/g与/i及/gi的使用指南
Aug 27 Javascript
Javascript中的关键字和保留字整理
Oct 16 Javascript
js脚本实现数据去重
Nov 27 Javascript
jQuery层级选择器用法分析
Feb 10 Javascript
javascript求日期差的方法
Mar 02 Javascript
不同js异步函数同步的实现方法
May 28 Javascript
jQuery实现指定区域外单击关闭指定层的方法【经典】
Jun 22 Javascript
详解vue.js移动端配置flexible.js及注意事项
Apr 10 Javascript
JS如何判断对象是否包含某个属性
Aug 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
MVC模式的PHP实现
2006/10/09 PHP
PHP采用XML-RPC构造Web Service实例教程
2014/07/16 PHP
thinkPHP框架可添加js事件的分页类customPage.class.php完整实例
2017/03/16 PHP
详解PHP发送邮件知识点
2018/05/06 PHP
ThinkPHP like模糊查询,like多匹配查询,between查询,in查询,一般查询书写方法
2018/09/26 PHP
一个tab标签切换效果代码
2009/03/27 Javascript
JavaScript 异步调用框架 (Part 2 - 用例设计)
2009/08/03 Javascript
菜鸟javascript基础资料整理3 正则
2010/12/06 Javascript
JS使用getComputedStyle()方法获取CSS属性值
2014/04/23 Javascript
from表单多个按钮提交用onclick跳转不同action
2014/04/24 Javascript
JavaScript实现在标题栏上显示当前日期的方法
2015/03/19 Javascript
JavaScript中模拟实现jsonp
2015/06/19 Javascript
值得分享和收藏的Bootstrap学习教程
2016/05/12 Javascript
理解Angular的providers给Http添加默认headers
2017/07/04 Javascript
信息滚动效果的实例讲解
2017/09/18 Javascript
laydate如何根据开始时间或者结束时间限制范围
2018/11/15 Javascript
解决layui laydate 时间控件一闪而过的问题
2019/09/28 Javascript
p5.js临摹旋转爱心
2019/10/23 Javascript
使用Vue生成动态表单
2019/11/26 Javascript
JavaScript获取当前url路径过程解析
2019/12/27 Javascript
vue3 watch和watchEffect的使用以及有哪些区别
2021/01/26 Vue.js
python库lxml在linux和WIN系统下的安装
2018/06/24 Python
python对象与json相互转换的方法
2019/05/07 Python
django admin后台添加导出excel功能示例代码
2019/05/15 Python
Python 字符串处理特殊空格\xc2\xa0\t\n Non-breaking space
2020/02/23 Python
python中entry用法讲解
2020/12/04 Python
孤独星球出版物:Lonely Planet Publications
2018/03/17 全球购物
关于青春的演讲稿
2014/05/05 职场文书
美术社团活动总结
2014/06/27 职场文书
英语教师个人工作总结
2015/02/09 职场文书
酒店财务部岗位职责
2015/04/14 职场文书
四大名著读书笔记
2015/06/25 职场文书
导游词之镇江-金山寺
2019/10/14 职场文书
Python基于Tkinter开发一个爬取B站直播弹幕的工具
2021/05/06 Python
OpenCV-Python实现轮廓的特征值
2021/06/09 Python
Golang实现可重入锁的示例代码
2022/05/25 Golang