解决on事件的多次回调(socket,uni.on)

原因使用socket.emit 发送了一个事件 另一个页面scoket.on接此接收事件 在mounted初始化 当在当前页面接收正常,一旦退出该页面再次进入就会多一次接收,实则发了一次。造成这种原因是因为当前事件一直保存没有被结束

举例:

A页面

sendMsg()
{
    this.$socket.emit('send_msg', {data: 1});
}

B页面 当多次往返该页面 接收函数触发次数会随着页面往返次数增加,往返两次就打印两遍,依此类推

methods:{
    // mounted 注册完直接监听
    receiveMsg() {
            // 接收方信息
            this.$socket.on('send_msg', (e) => {
                console.log(e)
            });
    }
},
mounted(){
    this.receiveMsg()// 注册   
}

解决:在on之前,off该事件

B页面

methods:{
    // mounted 注册完直接监听
    receiveMsg() {
            //先取消再监听
            this.$socket.off('send_msg');
            // 接收方信息
            this.$socket.on('send_msg', (e) => {
                console.log(e)
            });
    }
},
mounted(){
    this.receiveMsg()// 注册 
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值