Vue3 事件总线

为什么要使用总线事件

答:一般父子组件通信,就直接使用事件抛出emit就好,但是如果两个组件没有关系 或者 关系嵌套层级很多,就要采用总线事件系统。

总线事件系统逻辑:

A组件抛出事件名a,B组件里面,在mounted生命周期监听事件名a,并做出处理。

Vue2 创建方式

import Vue from 'vue';
Vue.prototype.$bus = new Vue();

为什么这样使用呢?

因为 在 Vue2 API 中实例方法/事件 中,存在这个 vm.$on 和vm.$emit 两个接口

 

vue3官网推荐使用 mitt 第三方库

npm install --save mitt
//main.js

import { createApp } from 'vue'
import App from './App.vue'
const app = createApp(App)

//挂载事务总线
import mitt from 'mitt'
app.config.globalProperties.$bus = new mitt();

app.use(Vue3DraggableResizable);
app.mount('#app')

在其它组件使用

//事件抛出
this.$bus.emit("closeCommunicateFrame");


//事件接收
this.$bus.on('closeCommunicateFrame',()=>{
     this.communicateObj.isShow = false;
})

========================== 分割线 ======================================

**Vue3 官网 关于事件总线给出的说明**

根据官网说明,不鼓励使用总事件系统,优先使用其它替代方案去解决

  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tengyuxin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值