Vue组件通信中使用eventBus

Vue组件通信中使用eventBus

使用场景

主要是现实途径是在要相互通信的兄弟组件之中,都引入一个新的vue实例,然后通过分别调用这个实例的事件触发和监听来实现通信和参数传递。

简单的例字

比如,我们这里有三个组件,index.vue、message-general.vue、chat-editor.vue。message-general和chat-editor是父组件main下的兄弟组件。这里要实现,message-general组件中触发点击事件后,调用chat-editor组件的方法。

首先,我们给message-general.vue组件添加点击事件:

<span @click="atPerson(user)"></span>

想要在atPerson()方法中,实现对chat-editor组件的通信,我们需要新建一个js文件,来创建出我们的eventBus,我们把它命名为eventBus.js

import Vue from 'vue';
const eventBus = new Vue();
export { eventBus };

这样我们就创建了一个新的vue实例。接下来我们在message-general组件和chat-editor组件中import它。

import { eventBus } from '@/utils/eventBus';

接下来,我们在atPerson方法中,来触发一个事件:

methods: {
	atPerson(user) {
      eventBus.$emit('atPerson', user);
    }
}

这里我们在message-general组件中每次点击,都会在eventBus中触发这个名为’atPerson’的事件,并将点击事件的user参数顺着事件传递出去。

接着,我们要在chat-editor组件中的mounted中调用eventBus监听这个事件,并接收参数:

mounted() {
	eventBus.$on('atPerson', data=> {
      console.log('接收的参数', data);
    });
}

图片示例

图1:
在这里插入图片描述
图2:
在这里插入图片描述
图3:
在这里插入图片描述

图4:
在这里插入图片描述
图5:
在这里插入图片描述

图6:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值