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实现的自定义的对话框的实现代码
Mar 21 Javascript
Extjs3.0 checkboxGroup 动态添加item实现思路
Aug 14 Javascript
js同源策略详解
May 21 Javascript
纯javascript判断查询日期是否为有效日期
Aug 24 Javascript
微信小程序 navigation API实例详解
Oct 02 Javascript
原生js仿淘宝网商品放大镜效果
Feb 28 Javascript
jQuery+ajax实现修改密码验证功能实例详解
Jul 06 jQuery
jQuery EasyUI 选项卡面板tabs的使用实例讲解
Dec 25 jQuery
基于vue-cli配置lib-flexible + rem实现移动端自适应
Dec 26 Javascript
JavaScript实现小球沿正弦曲线运动
Sep 07 Javascript
layui添加动态菜单与选项卡 AJAX请求的例子
Sep 25 Javascript
基于angular实现树形二级表格
Oct 16 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在特殊字符前加斜杠的实现代码
2011/07/17 PHP
深入浅析PHP7.0新特征(五大新特征)
2015/10/29 PHP
PHP自动识别当前使用移动终端
2018/05/21 PHP
jQuery 注意事项 与原因分析
2009/04/24 Javascript
jQuery使用addClass()方法给元素添加多个class样式
2015/03/26 Javascript
JQuery判断checkbox是否选中及其它复选框操作方法合集
2015/06/01 Javascript
浅谈利用JavaScript进行的DDoS攻击原理与防御
2015/06/04 Javascript
无刷新上传文件并返回自定义值
2015/06/11 Javascript
详解JavaScript中localStorage使用要点
2016/01/13 Javascript
AngularJs Managing Service Dependencies详解
2016/09/02 Javascript
windows下vue-cli及webpack搭建安装环境
2017/04/25 Javascript
React Native中TabBarIOS的简单使用方法示例
2017/10/13 Javascript
使用Vue实现图片上传的三种方式
2018/07/17 Javascript
微信小程序实现指定显示行数多余文字去掉用省略号代替
2018/07/25 Javascript
Vue项目从webpack3.x升级webpack4不完全指南
2019/04/28 Javascript
kafka调试中遇到Connection to node -1 could not be established. Broker may not be available.
2019/09/17 Javascript
vue  elementUI 表单嵌套验证的实例代码
2019/11/06 Javascript
js实现计算器功能
2020/08/10 Javascript
JavaScript函数柯里化实现原理及过程
2020/12/02 Javascript
如何搜索查找并解决Django相关的问题
2014/06/30 Python
pytorch 彩色图像转灰度图像实例
2020/01/13 Python
Python continue语句实例用法
2020/02/06 Python
Python flask框架实现浏览器点击自定义跳转页面
2020/06/04 Python
python 使用paramiko模块进行封装,远程操作linux主机的示例代码
2020/12/03 Python
css图标制作教程制作云图标
2014/01/19 HTML / CSS
Regatta官网:英国最受欢迎的户外服装和鞋类品牌
2019/05/01 全球购物
Diptyque英国官方网站:源自法国的知名香氛品牌
2019/08/28 全球购物
优秀班主任经验交流材料
2014/06/02 职场文书
材料专业大学毕业生自荐书
2014/07/02 职场文书
社区娱乐活动方案
2014/08/21 职场文书
仲裁协议书
2014/09/26 职场文书
离婚协议书怎样才有法律效力
2014/10/10 职场文书
学生自我评语
2015/01/04 职场文书
预备党员群众意见
2015/06/01 职场文书
解决go在函数退出后子协程的退出问题
2021/04/30 Golang
JavaScript原型链中函数和对象的理解
2022/06/16 Javascript