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之小练习代码
Oct 12 Javascript
window.location.hash 使用说明
Nov 08 Javascript
在JavaScript中获取请求的URL参数[正则]
Dec 25 Javascript
JavaScript静态类型检查工具FLOW简介
Jan 06 Javascript
JS实现的页面自定义滚动条效果
Oct 26 Javascript
每天一篇javascript学习小结(Date对象)
Nov 13 Javascript
详解10分钟学会vue滚动行为
Sep 21 Javascript
axios 封装上传文件的请求方法
Sep 26 Javascript
JavaScript数据结构与算法之二叉树添加/删除节点操作示例
Mar 01 Javascript
jquery ui 实现 tab标签功能示例【测试可用】
Jul 25 jQuery
vue滚动插件better-scroll使用详解
Oct 18 Javascript
微信小程序学习之自定义滚动弹窗
Dec 20 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
咖啡机如何保养和日常清洁?
2021/03/03 冲泡冲煮
php 之 没有mysql支持时的替代方案
2006/10/09 PHP
PHP curl模拟浏览器采集阿里巴巴的实现代码
2011/04/20 PHP
使用PHP遍历文件夹与子目录的函数代码
2011/09/26 PHP
PHP运行模式的深入理解
2013/06/03 PHP
深入理解用mysql_fetch_row()以数组的形式返回查询结果
2013/06/05 PHP
一个php短网址的生成代码(仿微博短网址)
2014/05/07 PHP
PHP定时执行任务的3种方法详解
2015/12/21 PHP
CI框架实现框架前后端分离的方法详解
2016/12/30 PHP
PHP简单留言本功能实现代码
2017/06/09 PHP
php利用ob_start()清除输出和选择性输出的方法
2018/01/18 PHP
PHP中引用类型和值类型功能与用法示例
2019/02/26 PHP
JSQL SQLProxy 的 php 版本代码
2010/05/05 Javascript
jQuery点击其他地方时菜单消失的实现方法
2016/04/22 Javascript
Angular2中Bootstrap界面库ng-bootstrap详解
2016/10/18 Javascript
js中bool值的转换及“&&”、“||”、 “!!”详解
2017/12/21 Javascript
JavaScript实现快速排序的方法分析
2018/01/10 Javascript
webpack4 处理CSS的方法示例
2018/09/03 Javascript
vue interceptor 使用教程实例详解
2018/09/13 Javascript
js动态获取时间的方法分析
2019/08/02 Javascript
vue中beforeRouteLeave实现页面回退不刷新的示例代码
2019/11/01 Javascript
uniapp与webview之间的相互传值的实现
2020/06/29 Javascript
python使用Tkinter显示网络图片的方法
2015/04/24 Python
简介Python中用于处理字符串的center()方法
2015/05/18 Python
python制作爬虫爬取京东商品评论教程
2016/12/16 Python
python 将字符串转换成字典dict的各种方式总结
2018/03/23 Python
Python装饰器模式定义与用法分析
2018/08/06 Python
python使用pandas抽样训练数据中某个类别实例
2020/02/28 Python
Jupyter notebook运行Spark+Scala教程
2020/04/10 Python
提供世界各地便宜的机票:Sky-tours
2016/07/21 全球购物
美国转售二手商品的电子商务平台:BLINQ
2018/12/13 全球购物
世界各地的旅游、观光和活动:Isango!
2019/10/29 全球购物
物业客服专员岗位职责
2013/11/30 职场文书
软件工程毕业生自荐信
2014/07/04 职场文书
股东授权委托书范本
2014/09/13 职场文书
设备技术员岗位职责
2015/04/11 职场文书