vue3中eventbus.getinstance().dispatchevent()怎么给对应的组件传值
时间: 2024-09-24 21:16:25 浏览: 46
在Vue 3中,Event Bus(事件总线)是一种常用的解决方案,用于在组件之间进行通信,尤其是在父子组件、兄弟组件间的非直接耦合情况。EventBus是一个独立于Vue实例的对象,通常我们会在应用中全局注册一个EventBus的实例。
当你需要在某个组件中(比如A组件)发送一个事件到其他组件(B组件),你可以这样做:
```javascript
import EventBus from '@/common/event-bus.js'; // 引入事件总线
// A组件中
const eventBus = EventBus.getInstance(); // 获取当前EventBus实例
eventBus.dispatch('eventName', {'key': 'value'}); // 触发事件并传递数据
```
这里`'eventName'`是你自定义的事件名称,`{'key': 'value'}`是要传递的数据。在B组件中,你需要订阅这个事件:
```javascript
export default {
created() {
EventBus.$on('eventName', this.handleEvent);
},
methods: {
handleEvent(data) {
console.log('接收到的数据:', data);
// 这里可以处理接收到的数据
}
},
... // 其他组件代码
}
```
当事件被`dispatch`后,所有订阅了该事件的组件都会执行对应的方法(`handleEvent`),并将接收到的数据作为参数。
阅读全文