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 相关文章推荐
js实现简单模态窗口,背景灰显
Nov 14 Javascript
jQuery timers计时器简单应用说明
Oct 28 Javascript
Javascript 按位与运算符 (&)使用介绍
Feb 04 Javascript
JS实现点击按钮后框架内载入不同网页的方法
May 05 Javascript
快速掌握Node.js模块封装及使用
Mar 21 Javascript
前端学习笔记style,currentStyle,getComputedStyle的用法与区别
May 28 Javascript
jQuery实现右下角可缩放大小的层完整实例
Jun 20 Javascript
原生JS实现跑马灯效果
Feb 20 Javascript
Angular 4.x+Ionic3踩坑之Ionic3.x pop反向传值详解
Mar 13 Javascript
vue 巧用过渡效果(小结)
Sep 22 Javascript
ES6 proxy和reflect的使用方法与应用实例分析
Feb 15 Javascript
通过JS判断网页是否为手机打开
Oct 28 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&&mysql)六
2006/10/09 PHP
用PHP实现维护文件代码
2007/06/14 PHP
PHP中如何实现常用邮箱的基本判断
2014/01/07 PHP
PHP 常用时间函数资料整理
2016/10/22 PHP
thinkphp5.0自定义验证规则使用方法
2017/11/16 PHP
js DOM模型操作
2009/12/28 Javascript
Jquery中对数组的操作代码
2011/08/12 Javascript
JQuery入门——用bind方法绑定事件处理函数应用介绍
2013/02/05 Javascript
Jqgrid设置全选(选择)及获取选择行的值示例代码
2013/12/28 Javascript
js如何判断用户是否是用微信浏览器
2014/06/05 Javascript
js实现input框文字动态变换显示效果
2015/08/19 Javascript
AngularJS中的过滤器filter用法完全解析
2016/04/22 Javascript
Vue + Vue-router 同名路由切换数据不更新的方法
2017/11/20 Javascript
vue 自定义提示框(Toast)组件的实现代码
2018/08/17 Javascript
vue中组件通信的八种方式(值得收藏!)
2019/08/09 Javascript
React+Redux实现简单的待办事项列表ToDoList
2019/09/29 Javascript
JavaScript实现网页下拉菜单效果
2020/11/20 Javascript
Python实现对PPT文件进行截图操作的方法
2015/04/28 Python
举例讲解Python编程中对线程锁的使用
2016/07/12 Python
解决出现Incorrect integer value: '' for column 'id' at row 1的问题
2017/10/29 Python
python用户管理系统的实例讲解
2017/12/23 Python
pandas read_excel()和to_excel()函数解析
2019/09/19 Python
PIL.Image.open和cv2.imread的比较与相互转换的方法
2020/06/03 Python
Python优秀开源项目Rich源码解析的流程分析
2020/07/06 Python
欧洲领先的技术商店:eibmarkt.com
2019/05/10 全球购物
列车长先进事迹材料
2014/01/25 职场文书
运动会通讯稿100字
2014/01/31 职场文书
安全责任协议书
2014/04/21 职场文书
初中学校对照检查材料
2014/08/19 职场文书
学生不讲诚信检讨书
2014/09/29 职场文书
2014年党员发展工作总结
2014/12/02 职场文书
2015年卫生院健康教育工作总结
2015/07/24 职场文书
2019年大学推荐信
2019/06/24 职场文书
CSS3 制作的图片滚动效果
2021/04/14 HTML / CSS
Pytest实现setup和teardown的详细使用详解
2021/04/17 Python
Java后台生成图片的完整步骤
2021/08/04 Java/Android