有时候非父子关系的组件也需要通信。在简单的场景下,使用一个空的Vue实例作为中央事件总线:
rush:js;">
var bus = new Vue()
// 触发组件 A 中的事件
bus.$emit('id-selected',1)
// 在组件 B 创建的钩子中监听事件
bus.$on('id-selected',function (id) {
// ...
})
在更多复杂的情况下,你应该考虑使用专门的 状态管理模式.就是用到了vuex
eventBus是作为兄弟关系的组件之间的通讯中介。
代码示例:
rush:xhtml;">
eventBus
效果图如下: