vue中evenBus接收不到数据报错

先后创建两个页面,A页面与B页面,需要将A页面的数据传递给B页面。

最初我在A页面设置一个点击事件,点击该事件执行以下方法

Bus.$emit('option', this.option1)
this.$router.push('/bigechart')

在B页面中created中接收A页面传来的数据

Bus.$on('option', (message) => {
      let optionm = JSON.stringify(message)
      sessionStorage.setItem('optionc', optionm)
      console.log(sessionStorage.getItem('optionc'))
    })

这时出现了问题,B页面报错,接收不到数据,当我再次返回A页面再跳转B页面时,数据可以接收到。所以,推测是执行顺序,也就是vue的组件执行的顺序出现了问题,果不其然。

当我执行A页面的点击事件的时 ,B页面还未生成,也就是B页面的created中监听A事件传递数据的方法还没有被触发,所以即使A页面传递数据,B页面也是接收不到的(B页面没有监听到)

所以,我可以将A页面的数据放到beforeDestroy方法去执行,当A页面销毁前传递B页面。具体执行顺序如下:

1.点击A页面的事件跳转到B页面

bigchar () {
      //this.$router.push('/bigechart')
      this.$router.push('/bigechart')
    }

2.B页面组件执行created,也就是我们写的$on事件已经触发了

3.接着便是A组件被销毁

beforeDestroy () {
    Bus.$emit('option', this.option1)
  },

参考文章  https://www.jianshu.com/p/fde85549e3b0

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值