解决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 文档碎片
Jul 13 Javascript
获取元素距离浏览器周边的位置的方法getBoundingClientRect
Apr 17 Javascript
JQuery+DIV自定义滚动条样式的具体实现
Jun 25 Javascript
jquery中选择块并改变属性值的方法
Jul 31 Javascript
jQuery中 attr() 方法使用小结
May 03 Javascript
javascript实现页面刷新时自动清空表单并选中的方法
Jul 18 Javascript
JavaScript实现图片轮播组件代码示例
Nov 22 Javascript
JS多物体实现缓冲运动效果示例
Dec 20 Javascript
JS中使用gulp实现压缩文件及浏览器热加载功能
Jul 12 Javascript
基于jstree使用AJAX请求获取数据形成树
Aug 29 Javascript
vue动态绑定组件子父组件多表单验证功能的实现代码
May 14 Javascript
js字符串倒序的实例代码
Nov 30 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版
2012/04/20 PHP
PHP 正则表达式之正则处理函数小结(preg_match,preg_match_all,preg_replace,preg_split)
2012/10/05 PHP
PHP使用SOAP调用.net的WebService数据
2013/11/12 PHP
php设置静态内容缓存时间的方法
2014/12/01 PHP
PHP使用Memcache时模拟命名空间及缓存失效问题的解决
2016/02/27 PHP
php图片添加水印例子
2016/07/20 PHP
PHP中引用类型和值类型功能与用法示例
2019/02/26 PHP
PHP简单验证码功能机制实例详解
2019/03/27 PHP
JavaScript设置body高度为浏览器高度的方法
2015/02/09 Javascript
JavaScript中的Object对象学习教程
2016/05/20 Javascript
轻松掌握jQuery中wrap()与unwrap()函数的用法
2016/05/24 Javascript
深入理解Vue nextTick 机制
2018/04/28 Javascript
浅谈webpack SplitChunksPlugin实用指南
2018/09/17 Javascript
axios如何利用promise无痛刷新token的实现方法
2019/08/27 Javascript
layui写后台表格思路和赋值用法详解
2019/11/14 Javascript
toString.call()通用的判断数据类型方法示例
2020/08/28 Javascript
[02:11]DOTA2上海特级锦标赛主赛事第二日RECAP
2016/03/04 DOTA
[01:01:36]Optic vs paiN 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Python中使用socket发送HTTP请求数据接收不完整问题解决方法
2015/02/04 Python
python定时检查某个进程是否已经关闭的方法
2015/05/20 Python
Python中的sort()方法使用基础教程
2017/01/08 Python
Python3.6简单反射操作示例
2018/06/14 Python
Python对象属性自动更新操作示例
2018/06/15 Python
用Python写一个模拟qq聊天小程序的代码实例
2019/03/06 Python
python tkinter实现界面切换的示例代码
2019/06/14 Python
pytorch 输出中间层特征的实例
2019/08/17 Python
详解Pycharm出现out of memory的终极解决方法
2020/03/03 Python
英国品牌男装折扣网站:Brown Bag
2018/03/08 全球购物
橄榄树药房:OLIVEDA
2019/09/01 全球购物
马来西亚网上花店:FlowerAdvisor马来西亚
2020/01/03 全球购物
什么是表空间(tablespace)和系统表空间(System tablespace)
2013/02/25 面试题
感谢师恩主题班会
2015/08/17 职场文书
八年级作文之我的母亲
2019/12/10 职场文书
SQLServer2019 数据库的基本使用之图形化界面操作的实现
2021/04/08 SQL Server
python实现三次密码验证的示例
2021/04/29 Python
详细介绍MySQL中limit和offset的用法
2022/05/06 MySQL