vue 全局事件总线详解 $bus-任意组件间通信

25 篇文章 1 订阅

全局事件总线(GlobalEventBus)

是一种组件间通信方式,适用于任意组件间通信

1.安装全局事件总线

main.js入口文件配置

  new Vue({
  	beforeCreate() {
  		Vue.prototype.$bus = this 
        //安装全局事件总线,
        //在开发中习惯取名为:$bus,可以自由命名
  	},
  }).$mount('#app') 

2.使用事件总线

以 组件给 组件传值为例;(B —> A)

2.1.接收数据:

A组件想接收数据,则在A组件中给$bus绑定自定义事件;

事件的回调在A组件自身。

     methods(){
        //事件回调
       getName(data){
            console.log(date)
       }
     }
     
     mounted() {
        //绑定事件
       this.$bus.$on('eventName',this.getName)
     }

或者 箭头函数回调,不用在methods中另外写回调方法

      mounted() {
        this.$bus.$on('getName',(data)=>{
           console.log(data)
        })
      }

2.2.提供数据,触发事件:

在 B组件 中触发事件,并传递数据

this.$bus.$emit('getName',data)

              //(‘A组件中用$on绑定的事件名’,要传递的数据)

2.3.用$off去解绑当前组件所用到的事件

把事件用完之后最好在beforeDestroy钩子中,解绑事件;

 beforeDestroy() {
	this.$bus.$off('getName')
 }

注意:解绑单个自定义事件时,不能"$off()",必须写事件名,否则会把其它全部组件的都解绑了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值