有时候项目里面会遇到子组件与子组件通信。譬如以下情况:
image.png
点击左侧树菜单,获取id。然后给右边的图表。异步查询数据去渲染。
这时候假如不想用vuex。可以用eventbus让两个子组件传值。

首先,在main.js里面全局注册一个eventbus的方法。

Vue.prototype.$EventBus = new Vue(); 

然后在左边的子组件注册一个自定义事件,

 this.$EventBus.$emit(自定义事件名, 数据); 
 this.$EventBus.$emit("sjd", {num: 4}); 

接着在右边的子组件监听接收这个值

  this.$EventBus.$on("sjd", (val) => {
        console.log(val)
    });

控制台打印是这样:
image.png
这样就完成了子组件与子组件之间的传值了。


yyblog
278 声望3 粉丝

学习中,将平时项目用到的记录在这里