vue的keep-alive中使用EventBus的方法


Posted in Javascript onApril 23, 2019

最近项目中由于列表居多且都做了下拉刷新上拉加载,所以就使用了keep-alive组件来缓存页面数据,但是当在其他页面做一些操作改变了列表数据,当来到列表的时候每次都要下拉刷新一下,体验不好,所以就使用到了EventBus,在需要更新的时候就用EventBus来刷新列表。

1.keep-alive组件

keep-alive是Vue提供的一个抽象组件,用来对组件进行缓存,从而节省性能,由于是一个抽象组件,所以在页面渲染完毕后不会被渲染成一个DOM元素。但是对于展示型页面比较好用,表单类页面也会将所填数据保存起来,对于那种表单没提交又需要保存所填数据的场景非常实用。

keep-alive所缓存的页面只会执行一次created和mounted,也就是在第一次进入才会执行。但是又会多两个生命周期,分别是activated、deactivated,activated在每次进入执行而deactivated在每次离开前执行。 当然有些页面不需要缓存,就要进行一些处理,这里就不多讲了,因为估计大家都知道(不知道百度去...)。

2.EventBus(事件总线)

EventBus用于实现组件之间的数据通讯,使用起来非常之简单。只需要在main.js中加入以下代码:

Vue.prototype.$eventBus = new Vue();

上面代码就创建了一个全局EventBus,其实就是一个vue实例。

这样我们就可以在各个页面中使用了。

在页面中使用 $emit 方法就可以触发事件,然后组件中使用 $on 方法就可以监听对应事件,这个和组件之间传值是一样的。不过这个可以在非父子组件中传递状态,和vuex差不多。当然这种方法在简单应用中可以使用,复杂的应用应该使用 vuex ,这样方便管理和维护。

this.$eventBus.$emit('msg',data);// 触发事件
this.$eventBus.$on('msg',(data)=>{}) // 监听事件

3.组合使用

这两个我感觉很配,当我们使用keep-alive缓存了页面组件,我们需要在A面来触发B页面的列表刷新或其他方法时,这时候使用EventBus就非常方便,其他方法也可以,比如说使用vuex,但是此时就没有直接使用EventBus方便快捷了。 当我们在页面中使用了 this.$eventBus.$on 去监听一个事件,只要页面被缓存,就可以监听到其他页面触发的事件。这样我们就可以减少一些不必要的请求,而且在需要更新的时候去更新,也可以做一些其他的操作,简直美滋滋。

总结

以上所述是小编给大家介绍的vue的keep-alive中使用EventBus的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
extJs 下拉框联动实现代码
Apr 09 Javascript
用apply让javascript函数仅执行一次的代码
Jun 27 Javascript
jquery 显示*天*时*分*秒实现时间计时器
May 07 Javascript
JavaScript DOM元素尺寸和位置
Apr 13 Javascript
全面接触神奇的Bootstrap导航条实战篇
Aug 01 Javascript
Vue2实现组件props双向绑定
Dec 02 Javascript
AngularJs篇:使用AngularJs打造一个简易权限系统的实现代码
Dec 26 Javascript
理解Koa2中的async&await的用法
Feb 05 Javascript
vue中$set的使用(结合在实际应用中遇到的坑)
Jul 10 Javascript
javascript闭包的使用之按钮切换功能
Aug 30 Javascript
js字符串类型String常用操作实例总结
Jul 05 Javascript
Vue+Bootstrap收藏(点赞)功能逻辑与具体实现
Oct 22 Javascript
js继承的这6种方式!(上)
Apr 23 #Javascript
jQuery对底部导航进行跳转并高亮显示的实例代码
Apr 23 #jQuery
node.js基于socket.io快速实现一个实时通讯应用
Apr 23 #Javascript
深入浅出 Vue 系列 -- 数据劫持实现原理
Apr 23 #Javascript
vue 中 beforeRouteEnter 死循环的问题
Apr 23 #Javascript
JavaScript中十种一步拷贝数组的方法实例详解
Apr 22 #Javascript
vue watch关于对象内的属性监听
Apr 22 #Javascript
You might like
php mssql 数据库分页SQL语句
2008/12/16 PHP
php获取目录所有文件并将结果保存到数组(实例)
2013/10/25 PHP
php格式化电话号码的方法
2015/04/24 PHP
PHP pthreads v3在centos7平台下的安装与配置操作方法
2020/02/21 PHP
js wmp操作代码小结(音乐连播功能)
2008/11/08 Javascript
小议Javascript中的this指针
2010/03/18 Javascript
JavaScript 学习笔记二 字符串拼接
2010/03/28 Javascript
基于jquery实现图片广告轮换效果代码
2011/07/07 Javascript
jQuery实现鼠标移到元素上动态提示消息框效果
2013/10/20 Javascript
jquery中JSON的解析方式
2015/03/16 Javascript
js使用setTimeout实现定时炸弹的方法
2015/04/10 Javascript
自己动手写的jquery分页控件(非常简单实用)
2015/10/28 Javascript
JSONObject使用方法详解
2015/12/17 Javascript
jQuery+css实现非常漂亮的水平导航菜单效果
2016/07/27 Javascript
深入理解ES6 Promise 扩展always方法
2017/09/26 Javascript
jQuery 禁止表单用户名、密码自动填充功能
2017/10/30 jQuery
详解Nodejs get获取远程服务器接口数据
2019/03/26 NodeJs
微信小程序授权登录解决方案的代码实例(含未通过授权解决方案)
2019/05/10 Javascript
使用layui实现的左侧菜单栏以及动态操作tab项方法
2019/09/10 Javascript
vue深度监听(监听对象和数组的改变)与立即执行监听实例
2020/09/04 Javascript
Python列表(list)常用操作方法小结
2015/02/02 Python
利用Python批量生成任意尺寸的图片
2016/08/29 Python
python 实现提取某个索引中某个时间段的数据方法
2019/02/01 Python
利用Python进行图像的加法,图像混合(附代码)
2019/07/14 Python
python实现翻转棋游戏(othello)
2019/07/29 Python
将python2.7添加进64位系统的注册表方式
2019/11/20 Python
html5摇一摇代码优化包括DeviceMotionEvent等等
2014/09/01 HTML / CSS
澳大利亚UGG工厂直销:Australian Ugg Boots
2017/10/14 全球购物
马来西亚银饰品牌:JEOEL
2017/12/15 全球购物
美津浓美国官网:Mizuno美国
2018/08/07 全球购物
DNA基因检测和分析:23andMe
2019/05/01 全球购物
C++程序员求职信范文
2014/04/14 职场文书
2014年乡镇民政工作总结
2014/12/02 职场文书
雷锋之歌观后感
2015/06/10 职场文书
Python爬取某拍短视频
2021/06/11 Python
CentOS 7安装mysql5.7使用XtraBackUp备份工具命令详解
2022/04/12 MySQL