【vue+EventBus】兄弟组件传值

写这篇文章是为了记录,每次面试的时候被问到兄弟组件传值,我都是泛泛地说一下,不是很自信。

直到自己用过之后,兄弟组件传值确实挺好用的,记录一波······

假设父组件为A,兄弟组件为B和C

我的触发是tab切换,由B切到C
将B组件的值带给C

首先是要一个新的vue实例传值
在utils文件夹或者你自己定义的存放js文件的文件夹下,新建bus.js(名字可随意取)
里面只需要两行代码

import Vue from 'vue'

export default new Vue()

创建实列不是很重要,重要的是把它引入到B页面后

import EventBus from '@/utils/bus'

就可以在B页面开始使用啦,在需要传值的地方赋值之后,通过 EventBus.$emit触发一个自定义的方法sumsObj,将值放在后面

 const obj = {}
       obj.unitType = this.unitType
      obj.Isapprove = this.Isapprove
     obj.hasTodo = this.hasTodo  
    EventBus.$emit('sumsObj', obj)

然后在C页面就可以取到值了,C页面也要引入

import EventBus from '@/utils/bus'

在需要接收的地方,通过EventBus.$on接收自定义的方法sumsObj,通过箭头函数的方式获取值

 EventBus.$on('sumsObj', res => {
   this.paramsObj = res
    this.unitType = this.paramsObj.unitType
   this.Isapprove = this.paramsObj.Isapprove
   this.hasTodo = this.paramsObj.hasTodo  
})

好用到离谱,是不是~~~~~
备注:bus.js只新建一份即可, EventBus.$emit可以触发不同的方法名,所以不会影响其他页面的兄弟组件传值

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue中,EventBus是一个全局事件总线,用于在组件之间进行通信。通过EventBus,我们可以在一个组件中触发事件,并在其他组件中监听和处理这些事件。引用\[1\]中的代码演示了如何在Vue中使用EventBus进行事件监听和移除。首先,我们需要导入EventBus,然后定义一个事件监听函数。使用EventBus.$on()方法来监听一个自定义事件,并将事件名称和监听函数作为参数传递进去。当事件被触发时,监听函数将被执行。要停止监听事件,可以使用EventBus.$off()方法,并传递事件名称和监听函数作为参数。这将移除指定事件的指定监听函数。引用\[2\]提到了在业务有反复操作的页面时,EventBus可能会触发多次事件,这可能会导致问题。为了解决这个问题,可以在Vue页面销毁时,同时移除EventBus的事件监听。引用\[3\]展示了在接收方组件中如何使用EventBus.$on()方法订阅自定义事件并处理其响应。在mounted钩子函数中,使用EventBus.$on()方法来订阅自定义事件,并将处理函数作为参数传递进去。当事件被触发时,处理函数将被执行。 #### 引用[.reference_title] - *1* *2* [vue - EventBus](https://blog.csdn.net/qq_39085060/article/details/104226440)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Vue中的Event Bus](https://blog.csdn.net/AlegFox/article/details/130282307)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值