当前位置: 首页 > Web前端 > vue.js

Vue事件总线EventBus介绍

时间:2023-03-31 19:05:45 vue.js

一、事件总线简介事件总线又称为事件总线。在vue中,eventbus可以作为一个沟通桥梁的概念。它是所有组件共享的事件中心。您可以在中心注册以发送事件或接收事件。所以组件可以上下并行通知其他组件2.如何使用eventbus(1)初始化首先需要创建一个事件总线并导出,以便其他模块可以使用或监听。有两种方法可以处理第一种。新建一个js文件,比如event-bus.js//event-bus.jsimportVuefrom'vue'exportconstEventBus=newVue()其实eventbus是一个没有DOM的组件另一种方式,可以直接初始化EventBus在项目中的main.js中://main.jsVue.prototype.$EventBus=newVue()//注意这种方式初始化的EventBus是全局事件总线。(2)发送事件假设有两个vue页面需要通信,A页面绑定button设置点击事件后发送消息通知B页面//pageA下页B接收消息(三)接收事件如前所述,如果使用不当,eventBus将是一场灾难。Vue是一个单页应用程序。如果刷新某个页面,相关的eventbus会被移除,导致业务无法进行。还有,如果业务有重复操作的页面,eventBus在监听的时候会被多次触发,也是一个非常大的隐患。这时候我们需要在项目中妥善处理好eventbus的关系,通常是在vue页面销毁的时候,同事removeeventbuseventmonitoringremoveeventmonitoringimport{eventBus}from'./event-bus.js'EventBus.$off('aMsg',{})您希望EventBus.$off('eqwe')移除应用程序中此事件的所有侦听器,或者直接调用EventBus.$off()移除所有事件通道。不要加任何参数~~~~3.全局eventbus的工作原理是publish/subscribe方式,通常调用pub/sub来创建全局EventBus//1.创建bus.js文件**src/service/bus.js**constinstall=(Vue)=>{constBus=newVue({方法:{on(event,...args){this.$on(event,...args);},emit(event,callback){this.$emit(事件,回调);},off(事件,回调){this.$off(事件,回调);}}})Vue.prototype.$bus=Bus;}exportdefaultinstall;//**maix.js文件中引入了**importBusfrom"@/service/bus";Vue.use(Bus);//**使用**this.$bus.on('Config_forms',(data)=>{})//绑定事件this.$bus.emit('Config_forms',data)//触发该方法this.$bus.off('Config_forms')//解除绑定事件