我一直在阅读类似的主题,但我并没有真正得到他们的解决方案。我已经读过,如果您要重新注册新的事件处理程序,则此行为的原因是。在我的代码中,我不确定我正在重新注册一个新的事件处理程序。
SERVER
socket.on('test', function (data) {
socket.emit('test2', data);
});
客户端
save() {
app.io.emit('test', { hello: 'world' });
app.io.on('test2', (res)=>{
if(Object.keys(res).length > 0) {
console.log(res);
}
})
}
render() {
return (
<View style={styles.container}>
<Button title='Save' onPress={this.save}></Button>
</View>
);
}
这里的问题是,当我点击按钮SAVE时,函数app.io.on
抛出的返回次数不断增加。
例如:
首先点击返回一次 第二次单击返回两次 第三次点击返回3x
有没有办法防止这种情况发生,就像它应该只返回一次?提前谢谢。
答案 0 :(得分:1)
无论如何,我通过移动代码
对其进行了整理app.io.on('test2', (res)=>{
if(Object.keys(res).length > 0) {
console.log(res);
}
})
在componentDidMount()上,因此它将调用一次。每次调用此函数时,事件将继续发生(多次触发),这是由于我的问题引起的。