Vue 全局事件总线

全局事件总线是Vue中一种组件间通信的方法,它允许任意组件间传递数据。通过在Vue实例上注册$bus并在beforeCreate钩子中将其绑定到原型,可以方便地在组件中触发($emit)和监听($on)自定义事件。在组件销毁前,使用$off解绑事件以防止内存泄漏。例如,子组件通过$emit触发事件,父组件通过监听器接收并处理数据。
摘要由CSDN通过智能技术生成

全局事件总线

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

安装全局总线

$bus就是当前应用的vm

new Vue({
    ....
    beforeCreate(){
    	Vue.prototype.$bus = this
	},
})

使用事件总线

  1. 接收数据:A组件想接收数据,则在A组件中给$bus绑定自定义事件,事件的回调留在A组件自身

    methods( ){
    	demo(data){...}
    }
    ....
    mounted( ){
    	this.$bus.$on('xxx', this.demo)
    }
    
  2. 提供数据:this.$bus.$emit('xxxx', 数据)

    在此处解释以下$emit

    $emit是触发自定义事件,而不是创建一个自定义事件


    【例如】

    子组件

    this.$emit("remove", data)
    

    父组件

    <School @remove="handleRemove"></School>
    
    handleRemove(data){
    	console.log("删除")
    }
    

    整个的流程为:

    1. 用户触发了子组件的事件
    2. 子组件调用事件函数
    3. 自组件的事件函数中触发自定义事件
    4. 父组件中绑定自定义事件的标签执行父组件的事件函数
  3. 最好在beforeDestroy钩子中,用$off去解绑 当前组件所用到的自定义事件

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值