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 相关文章推荐
Date对象格式化函数代码
Jul 17 Javascript
C#中TrimStart,TrimEnd,Trim在javascript上的实现
Jan 17 Javascript
Javascript浅谈之this
Dec 17 Javascript
浅谈JS闭包中的循环绑定处理程序
Nov 09 Javascript
浅析2种JavaScript继承方式
Dec 04 Javascript
微信小程序 五星评价功能的实现
Mar 09 Javascript
B/S(Web)实时通讯解决方案分享
Apr 06 Javascript
深入理解JavaScript创建对象的多种方式以及优缺点
Jun 01 Javascript
Vue.js对象转换实例
Jun 07 Javascript
js找出5个数中最大的一个数和倒数第二大的数实现方法示例小结
Mar 04 Javascript
Nest.js参数校验和自定义返回数据格式详解
Mar 29 Javascript
分享几个JavaScript运算符的使用技巧
Apr 24 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连接类
2013/06/07 PHP
CI框架中集成CKEditor编辑器的教程
2014/06/09 PHP
php获取客户端电脑屏幕参数的方法
2015/01/09 PHP
php绘制一条直线的方法
2015/01/24 PHP
php英文单词统计器
2016/06/23 PHP
php 指定范围内多个随机数代码实例
2016/07/18 PHP
php和vue配合使用技巧和方法
2019/05/09 PHP
两个Javascript小tip资料
2010/11/23 Javascript
Javascript 函数的四种调用模式
2016/11/05 Javascript
ES6 Promise对象概念与用法分析
2017/04/01 Javascript
vue单页应用中如何使用jquery的方法示例
2017/07/27 jQuery
angular4实现tab栏切换的方法示例
2017/10/21 Javascript
微信小程序实现吸顶效果
2020/01/08 Javascript
vue-video-player 解决微信自动全屏播放问题(横竖屏导致样式错乱问题)
2020/02/25 Javascript
浅析TypeScript 命名空间
2020/03/19 Javascript
JavaScript浅层克隆与深度克隆示例详解
2020/09/01 Javascript
python处理文本文件实现生成指定格式文件的方法
2014/07/31 Python
Python中Iterator迭代器的使用杂谈
2016/06/20 Python
windows下ipython的安装与使用详解
2016/10/20 Python
详解Python3.6安装psutil模块和功能简介
2018/05/30 Python
Python内存读写操作示例
2018/07/18 Python
使用tensorflow实现线性回归
2018/09/08 Python
tensorflow获取预训练模型某层参数并赋值到当前网络指定层方式
2020/01/24 Python
Python基于pillow库实现生成图片水印
2020/09/14 Python
Python爬取微信小程序通用方法代码实例详解
2020/09/29 Python
CSS3中各种颜色属性的使用教程
2016/05/17 HTML / CSS
css3实现背景动态渐变效果
2019/12/10 HTML / CSS
Speedo速比涛中国官方网站:全球领先泳装运动品牌
2018/04/24 全球购物
CK巴西官方网站:Calvin Klein巴西
2019/07/19 全球购物
若干个Java基础面试题
2015/05/19 面试题
私人委托书格式
2014/09/10 职场文书
优秀学生干部事迹材料
2014/12/24 职场文书
工程项目经理岗位职责
2015/02/02 职场文书
《赵州桥》教学反思
2016/02/17 职场文书
C站最全Python标准库总结,你想要的都在这里
2021/07/03 Python
javascript中Set、Map、WeakSet、WeakMap区别
2022/12/24 Javascript