反应setState不适用于websocket

时间:2020-06-30 07:14:04

标签: reactjs websocket

我正在从网络套接字接收消息,此后我必须更新状态,我已经跳过了先前的问题,并尝试向setState添加回调,但是它似乎仍然不起作用


constructor() {
    super();
    
    this.state = {
    bus: [5, 6]}

}


render() {

    const ws = new WebSocket("ws://-------:5055");
    const navigation = this.props.navigation;
    const state = this.state;
    const props = this.props;

    ws.onmessage = (e) => {
     
      this.setState({
        bus: e.data
      },()=>console.log( state.bus)
      );
 
    };

请注意,如果我在控制台上记录接收到的消息,即它确实表明已接收到消息,那么我会发现setState是异步的,但如果我向其添加了回调函数,它应该不起作用

1 个答案:

答案 0 :(得分:1)

在此配置中,您将在组件的每个渲染上创建新的websocket连接。您必须将连接移至echo $Otp; 钩子

componentDidMount

这将确保您只有一个连接。