VUE中使用bus传值时,接收页面多次触发接收方法的问题

使用bus在兄弟组件间传递值时,可能会有多个组件监听通过bus传出的值。比如:

组件A的一个按钮事件中有这么一句:bus.$emit('getUnitId',data);组件B、C、D中监听接收。

在组件B中接收的代码如下

mounted(){

    bus.$on("getUnitId",  function(data){

        console.log(data);

    });

},

发现组件B中的 console.log(data)  被执行了多次。

解决:

每个监听这个bus事件的组件,按如下代码修改:

mounted(){

    bus.$on("getUnitId", this.dealBusData);

},

methods:{

    dealBusData(data){

          console.log(data);

    }

},

beforeDestroy(){

      bus.$off('getUnitId',this.dealBusData);//组件销毁时关闭监听

},

还有一种问题是跳转时通过bus传递会存在的问题。之前也遇到过,参考链接:

https://www.jianshu.com/p/fde85549e3b0

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值