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 相关文章推荐
你需要知道的10个最佳javascript开发实践小结
Apr 15 Javascript
jQuery aminate方法定位到页面具体位置
Dec 26 Javascript
javascritp添加url参数将参数加入到url中
Sep 25 Javascript
JS+CSS实现六级网站导航主菜单效果
Sep 28 Javascript
Vue.js 2.0 和 React、Augular等其他前端框架大比拼
Oct 08 Javascript
Bootstrap基本组件学习笔记之缩略图(13)
Dec 08 Javascript
Bootstrap导航条鼠标悬停下拉菜单
Jan 04 Javascript
canvas 弹幕效果(实例分享)
Jan 11 Javascript
jquery操作select取值赋值与设置选中实例
Feb 28 Javascript
前端必备插件之纯原生JS的瀑布流插件Macy.js
Nov 22 Javascript
JS 自执行函数原理及用法
Aug 05 Javascript
vue+element_ui上传文件,并传递额外参数操作
Dec 05 Vue.js
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 网页播放器用来播放在线视频的代码(自动判断并选择视频文件类型)
2010/06/03 PHP
关于shopex同步ucenter的redirect问题,导致script不运行
2013/04/10 PHP
php实现将HTML页面转换成word并且保存的方法
2016/10/14 PHP
关于php中的json_encode()和json_decode()函数的一些说明
2016/11/20 PHP
php生成随机数/生成随机字符串的方法小结【5种方法】
2020/05/27 PHP
jQuery的Ajax时无响应数据的解决方法
2010/05/25 Javascript
window.parent与window.openner区别介绍
2012/04/12 Javascript
Javascript计算两个marker之间的距离(Google Map V3)
2013/04/26 Javascript
jQuery插件Skippr实现焦点图幻灯片特效
2015/04/12 Javascript
Bootstrap与KnockoutJs相结合实现分页效果实例详解
2016/05/03 Javascript
JSON字符串转换JSONObject和JSONArray的方法
2016/06/03 Javascript
jQuery 翻页组件yunm.pager.js实现div局部刷新的思路
2016/08/11 Javascript
JavaScript面向对象分层思维全面解析
2016/11/22 Javascript
jQuery无缝轮播图代码
2016/12/22 Javascript
less简单入门(CSS 预处理语言)
2017/03/08 Javascript
JS实现向iframe中表单传值的方法
2017/03/24 Javascript
Angular开发实践之服务端渲染
2018/03/29 Javascript
webstorm中配置nodejs环境及npm的实例
2018/05/15 NodeJs
Vue仿微信app页面跳转动画效果
2019/08/21 Javascript
Vue.js数字输入框组件使用方法详解
2019/10/19 Javascript
Vue封装Axios请求和拦截器的步骤
2020/09/16 Javascript
浅谈配置OpenCV3 + Python3的简易方法(macOS)
2018/04/02 Python
关于tf.reverse_sequence()简述
2020/01/20 Python
django中的数据库迁移的实现
2020/03/16 Python
解决使用python print打印函数返回值多一个None的问题
2020/04/09 Python
python搜索算法原理及实例讲解
2020/11/18 Python
Pytest测试框架基本使用方法详解
2020/11/25 Python
HTML5 File API改善网页上传功能
2009/08/19 HTML / CSS
【魔兽争霸3重制版】原版画面与淬火MOD画面对比
2021/03/26 魔兽争霸
护士专业推荐信
2013/11/02 职场文书
电子信息毕业生自荐信
2013/11/16 职场文书
电子商务专业学生的自我鉴定
2013/11/28 职场文书
保护环境标语
2014/06/09 职场文书
六查六看个人剖析材料
2014/10/14 职场文书
2016学校先进集体事迹材料
2016/02/29 职场文书
详解Nginx启动失败的几种错误处理
2021/04/01 Servers