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动态添加表格数据使用insertRow和insertCell实现
May 22 Javascript
javascript中eval函数用法分析
Apr 25 Javascript
基于jQuery实现仿百度首页换肤背景图片切换代码
Aug 25 Javascript
JS实现常见的TAB、弹出层效果(TAB标签,斑马线,遮罩层等)
Oct 08 Javascript
jQuery基于muipicker实现仿ios时间选择
Feb 22 Javascript
jQuery 检查某个元素在页面上是否存在实例代码
Oct 27 Javascript
AngularJS学习笔记(三)数据双向绑定的简单实例
Nov 08 Javascript
JS实现字符串转驼峰格式的方法
Dec 16 Javascript
基于JS设计12306登录页面
Dec 28 Javascript
JS+HTML5 FileReader实现文件上传前本地预览功能
Mar 27 Javascript
vue-cli系列之vue-cli-service整体架构浅析
Jan 14 Javascript
javascript设计模式之迭代器模式
Jan 30 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大量数据的时候内存占用分析
2011/07/22 PHP
php检测iis环境是否支持htaccess的方法
2014/02/18 PHP
PHP的Yii框架中创建视图和渲染视图的方法详解
2016/03/29 PHP
PHP防止sql注入小技巧之sql预处理原理与实现方法分析
2019/12/13 PHP
如何让页面加载完成后执行js
2013/06/26 Javascript
用js设置下拉框为只读的小技巧
2014/04/10 Javascript
JavaScript子窗口调用父窗口变量和函数的方法
2015/10/09 Javascript
JavaScript自动点击链接 防止绕过浏览器访问的方法
2017/01/19 Javascript
使用 Node.js 开发资讯爬虫流程
2018/01/07 Javascript
剖析Angular Component的源码示例
2018/03/23 Javascript
swiper4实现移动端导航切换
2020/10/16 Javascript
Vue+Node实现的商城用户管理功能示例
2019/12/23 Javascript
node创建Vue项目步骤详解
2020/03/06 Javascript
taro 实现购物车逻辑的实例代码
2020/06/05 Javascript
antd日期选择器禁止选择当天之前的时间操作
2020/10/29 Javascript
JS中锚点链接点击平滑滚动并自由调整到顶部位置
2021/02/06 Javascript
Pyhton中防止SQL注入的方法
2015/02/05 Python
python自动裁剪图像代码分享
2017/11/25 Python
Python pandas自定义函数的使用方法示例
2019/11/20 Python
python 读取更新中的log 或其它文本方式
2019/12/24 Python
Python实现读取并写入Excel文件过程解析
2020/05/27 Python
HTML5 canvas绘制的玫瑰花效果
2014/05/29 HTML / CSS
飞利浦比利时官方网站:Philips比利时
2016/08/24 全球购物
德国黑胶唱片、街头服装及运动鞋网上商店:HHV
2018/08/24 全球购物
澳大利亚家居用品零售商:Harris Scarfe
2020/10/10 全球购物
linux面试题参考答案(10)
2016/10/26 面试题
单位消防安全制度
2014/01/12 职场文书
大学自主招生自荐信范文
2014/02/26 职场文书
活动总结格式范文
2014/04/26 职场文书
辞旧迎新演讲稿
2014/09/15 职场文书
党风廉政建设个人总结
2015/03/06 职场文书
纪录片信仰观后感
2015/06/08 职场文书
董事长秘书工作总结
2015/08/14 职场文书
2016消防宣传标语口号
2015/12/26 职场文书
JPA如何使用entityManager执行SQL并指定返回类型
2021/06/15 Java/Android
《最终幻想14》6.01版本4月5日推出 追加新任务新道具
2022/04/03 其他游戏