React Native中的Socket IO触发多个事件

时间:2017-04-30 08:14:54

标签: react-native socket.io

我一直在阅读类似的主题,但我并没有真正得到他们的解决方案。我已经读过,如果您要重新注册新的事件处理程序,则此行为的原因是。在我的代码中,我不确定我正在重新注册一个新的事件处理程序。

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

有没有办法防止这种情况发生,就像它应该只返回一次?提前谢谢。

1 个答案:

答案 0 :(得分:1)

无论如何,我通过移动代码

对其进行了整理
app.io.on('test2', (res)=>{
  if(Object.keys(res).length > 0) {
    console.log(res);
  }
})

在componentDidMount()上,因此它将调用一次。每次调用此函数时,事件将继续发生(多次触发),这是由于我的问题引起的。