Vue2.x中使用Bus遇到的问题及解决方法

场景描述:在vue项目中需要在A页面传值到B页面(A和B非关系组件)
问题描述:在A页面点击跳转路由需要把A页面data中的值传到B页面,但是bus总线在第一次路由跳转的时候总是不能够成功传递需要传递的数据
准备工作:在Vue的mian.js文件中添加以下代码就可以使用了

在这里插入图片描述

解决方法:bus的$on的监听应该位于 $emit之前,如果在emit之前没有创建监听事件,那么肯定是得不到需要的数据

就需要在A页面的beforeDestroy或者Destroy生命周期发送数据

在B页面中需要 beforeCreate或created或 beforeMount生命周期中接收数据
在这里插入图片描述
此时你会发现在控制台可以打印title的数据 但是这个数据无法直接赋值使用
在这里插入图片描述
所以我们就需要把接收到的数据存放在Bus的中 然在mounted中赋值 这样接收的值就可以渲染在页面上了
在这里插入图片描述
此时还有一步就算基本完成了
在我们用总线传值完成的时候要记得关闭监听不然会出现问题
在这里插入图片描述
结束:这样就解决问题了,但是在B页面刷新时,所传的数据会丢失,可以配合sessionStorage来使用,防止刷新导致数据丢失;解决的方法有多种多样,同样可以使用Vuex来实现。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值