当调用socket.io.on方法时,本机套接字编程会响应,然后this.state将被取消

时间:2017-09-16 07:36:12

标签: react-native

使用套接字

调用此方法时出错

componentDidMount(){

 var backapi = api.Backend_API();
 var db = this.state.data;
 console.log("componentDidMount", this.state.data)
  socket.on('notification',
  function (notification) {
    console.log("avi", notification);
    fetch(backapi + "event/eventname/" + notification.event_id, {
      method: 'GET',
    }).then((response) => response.json())
      .then((d) => {
        this.setState({
          data: d
        })
      })
    fetch(backapi + "user/getUserById/" + notification.created_by, {
      method: 'GET'
    }).then((response) => response.json())
      .then((data) => {
        console.log("username socket", data);
      })
  })

}

获取错误使用socket

调用此方法时,未定义this.setState

1 个答案:

答案 0 :(得分:1)

传递给socket.on('notification', ...)处理程序的函数从不同的上下文执行,因此this的值不同。因此,您必须使用.bind()运算符明确地将上下文绑定到函数,或者只是传入arrow function这样:

socket.on('notification', (notification) => {    
   ...
});