解决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中Eval函数的使用说明
Oct 11 Javascript
10个基于Jquery的幻灯片插件教程
Oct 29 Javascript
jquery 学习之二 属性(html()与html(val))
Nov 25 Javascript
js对字符的验证方法汇总
Feb 04 Javascript
JS验证IP,子网掩码,网关和MAC的方法
Jul 02 Javascript
js验证身份证号有效性并提示对应信息
Oct 19 Javascript
详解JavaScript的回调函数
Nov 20 Javascript
js 提交form表单和设置form表单请求路径的实现方法
Oct 25 Javascript
js实现textarea限制输入字数
Feb 13 Javascript
jQuery弹出窗口简单实现代码
Mar 09 Javascript
JS解决移动web开发手机输入框弹出的问题
Mar 31 Javascript
在Vue中使用mockjs代码实例
Nov 25 Vue.js
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
smarty中常用方法实例总结
2015/08/07 PHP
php实现计算百度地图坐标之间距离的方法
2016/05/05 PHP
yii2.0整合阿里云oss删除单个文件的方法
2017/09/19 PHP
保证JavaScript和Asp、Php等后端程序间传值编码统一
2009/04/17 Javascript
使用jQuery的将桌面应用程序引入浏览器
2010/11/19 Javascript
HTML DOM的nodeType值介绍
2011/03/31 Javascript
Javascript图像处理—平滑处理实现原理
2012/12/28 Javascript
Jquery图片滚动与幻灯片的实例代码
2013/04/08 Javascript
使用javascipt---实现二分查找法
2013/04/10 Javascript
Ajax提交与传统表单提交的区别说明
2014/02/07 Javascript
用C/C++来实现 Node.js 的模块(二)
2014/09/24 Javascript
JavaScript中对象介绍
2014/12/31 Javascript
AngularJs $parse、$eval和$observe、$watch详解
2016/09/21 Javascript
Angular实现模版驱动表单的自定义校验功能(密码确认为例)
2018/05/17 Javascript
解决vue-cli项目webpack打包后iconfont文件路径的问题
2018/09/01 Javascript
微信小程序实现商城倒计时
2020/11/01 Javascript
Nuxt使用Vuex的方法示例
2019/09/06 Javascript
JavaScript使用百度ECharts插件绘制饼图操作示例
2019/11/26 Javascript
javascript前端和后台进行数据交互方法示例
2020/08/07 Javascript
Vue 解决在element中使用$notify在提示信息中换行问题
2020/11/11 Javascript
[02:57]2014DOTA2国际邀请赛-观众采访
2014/07/19 DOTA
Python3.2模拟实现webqq登录
2016/02/15 Python
python开发环境PyScripter中文乱码问题解决方案
2016/09/11 Python
python通过Windows下远程控制Linux系统
2018/06/20 Python
python3.6环境下安装freetype库和基本使用方法(推荐)
2020/05/10 Python
Python 实现微信自动回复的方法
2020/09/11 Python
Python 实现劳拉游戏的实例代码(四连环、重力四子棋)
2021/03/03 Python
HTML5应用之文件上传
2016/12/30 HTML / CSS
this关键字的作用
2016/01/30 面试题
学前班评语大全
2014/05/04 职场文书
运动会演讲稿50字
2014/08/25 职场文书
2014年会计人员工作总结
2014/12/10 职场文书
2015年机关后勤工作总结
2015/05/26 职场文书
十月围城观后感
2015/06/08 职场文书
MySQL中in和exists区别详解
2021/06/03 MySQL
HTML实现仿Windows桌面主题特效的实现
2022/06/28 HTML / CSS