关于vue中使用事件车(Bus)方式实现兄弟组件通信时$on无法获取数据的问题

本文讨论了在Vue中使用事件车(Bus)进行兄弟组件通信时遇到的$on无法获取数据的问题。问题源于组件的生命周期,当尝试在beforeCreate阶段注册事件时,发送数据的组件尚未创建。解决方案是在当前组件的created钩子中监听事件,接收到数据后通过props传递给兄弟组件。代码示例展示了正确的通信实现。
摘要由CSDN通过智能技术生成

关于vue中使用事件车Bus方式实现兄弟组件通信时$on无法获取数据的问题

问题描述

  • 使用使用一个事件车(总线)的方式实现兄弟组件之间的通信,在接收数据时,当前组件获取到的数据一直未null
  • 首先考虑是不是没有执行这一步代码,随便打印一段信息,控制台正常输出
  • 确认监听事件 $on 的周期确实在 mounted
  • 尝试使用 this.$nextClick ,无效

原因

  • 百度的时候发现:
    在这里插入图片描述
    在这里插入图片描述
  • 感悟:$on 注册事件 $emit 触发事件,事件应该是先注册而后才能去触发
  • 联想到自己需要通信的两个兄弟组件渲染的时候使用了 v-if,而 v-if 对应的是组件的销毁与创建,并非是像 v-show 一样,对应组件的隐藏与展示
  • 所以,原因就很明显了:就是该组件$emit的时候与它通信的兄弟组件都还没有创建,而我又是在这个未创建的组件中 $on 注册事件的,所以就导致了要触发的事件还没有注册监听
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值