vue3_硅谷甄选_004_mitt插件实现兄弟组件通信


image-20240824143851562

在vue2当中我们可以根据vm和vc去推出全局实现总线,可以实现任意组件通信

image-20240824144511625

在vue3框架当中,它的vue构造函数没有了;

导致没有了vm

vue的原型对象也没有了;

this.$bus.$emit('send-message', message);

vue3组件的语法是setup;组合式API的语法;也没有this的写法;

vue3当中如果想要使用全局事件总线,这个业务,可以使用一个插件叫做mitt

举例

image-20240824145009457

如图child1和child2是兄弟组件,EventBus是父组件,我们实现兄弟组件之间的通信;

定义父组件

image-20240824145255260

image-20240824145305176

定义子组件

image-20240824151137266

父组件当中引入第一个子组件

image-20240824151227819

image-20240824151236643

定义第二个子组件

image-20240824151317633

父组件当中引入第二个子组件

image-20240824151341931

image-20240824151352117

需求:让两个子组件水平排列,放在一行

image-20240824151439128

image-20240824151505907

image-20240824151524276

需求:兄弟组件通信

子组件2上有一个按钮,点击这个按钮,就可以给子组件1送一台车法拉利;

image-20240824151632954

☆ 查看mitt插件怎么使用

image-20240824151716402

image-20240824151727427

mitt这个英语是接棒球的意思;

image-20240824151839637

image-20240824151852417

image-20240824152006429

使用mitt

image-20240824152223730

绑定事件

on方法是接收数据;

emit方法是送数据;

image-20240824152621890

组件挂载完毕的时候,当前组件绑定一个事件,接收将来兄弟组件传递的数据;

import $bus from '../../bus';
import { onMounted } from "vue";
onMounted(() => {
    $bus.on("car", (car) => {
        console.log(car);
    });
});

发送事件

image-20240824152939487

第一个组件打印出来了,通信成功

image-20240824152955420

很类似pubsub,一个是发布,一个是订阅;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值