vue兄弟组件之间用eventbus传值,传值成功但是页面没有变化

1、概念

EventBus称为事件总线。
EventBus就如同公交车,通过’$emit’让乘客(即所要传递的值)在发出地上车,在目的地通过’$on’使乘客下车。

 2、问题

两个组件,A组件和B组件两个不存在任何套嵌关系,通过路由跳转,就会存在一个问题,值传过来了但是页面HTML没有显示。

也就是说如果A组件和B组件在同一个页面,通过eventbus传值是好用的,但是如果不是,就会产生问题。

3、原因

与组件的生命周期有关,他们的加载顺序是这个样子的:

新组件:beforeCreate

新组件:created

新组件:beforeMount

旧组件:beforeDestroy

旧组件:destroyed

新组件:mounted

由此可以了解到你要在新组件dom挂载前将值传出来。

4、代码

A组件(要传值的组件)

 beforeDestroy () {
    this.$bus.$emit('handleSave',this.formData)
  },

B组件(接收数据的组件)

  created() {
    let _this = this
    this.$bus.$on('handleSave',(row) => {
      _this.$set(_this.formTableData.tableData,_this.settingIndex,row)
    })
  },

OK,解决

 

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值