Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[vue] 你有用过事件总线(EventBus)吗?说说你的理解 #314

Open
haizhilin2013 opened this issue Jun 20, 2019 · 5 comments
Open
Labels
vue vue

Comments

@haizhilin2013
Copy link
Collaborator

[vue] 你有用过事件总线(EventBus)吗?说说你的理解

@haizhilin2013 haizhilin2013 added the vue vue label Jun 20, 2019
@getanimation
Copy link

也是组件传值的一种方式(例如兄弟组件)

@Dyrixu
Copy link

Dyrixu commented Oct 9, 2019

@lllpla
Copy link

lllpla commented May 25, 2021

我理解:事件总线是事件通知的总线,不应该滥用事件总线来进行传值。
首先应该规范并统一事件的定义:
比如:某对象+发生某动作
例如:“客户1---信息发生了变更”

其他组件进行监听时候实际上只关注特定对象的特定动作。

@sc950828
Copy link

sc950828 commented Sep 23, 2022

就是一个vue实例,利用了vue的$on、$off、$emit方法

不过在vue3中这些方法被移除了。如果还要使用,需要利用 mitt插件

@Cai-zhiji
Copy link

在Vue中,事件总线是一种用于组件间通信的机制,允许不同组件之间进行事件的发布和订阅。

事件总线本质上是一个中央事件管理器,充当了组件之间的中介。它提供了一种简单而强大的方式,使得组件能够进行解耦,通过事件的方式进行通信,而不需要直接引用和依赖其他组件。

使用事件总线可以有效地解决跨组件通信的问题,特别是当组件层级较深或组件之间没有直接父子关系时。它可以减少组件之间的耦合性,提高代码的可维护性和可重用性。

示例

// 创建事件总线实例
const eventBus = new Vue();

// 在组件A中订阅事件
eventBus.$on('eventName', (data) => {
  // 处理事件的回调逻辑
});

// 在组件B中发布事件
eventBus.$emit('eventName', eventData);

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
vue vue
Projects
None yet
Development

No branches or pull requests

6 participants