如何在fetch API调用结果中使用“this”关键字

时间:2018-05-25 06:58:05

标签: javascript reactjs react-redux fetch-api

我正在使用以下提取API来获取API结果。我需要在状态中设置结果数据,但回调函数中的“this”对象不可用。如何通过访问this关键字来更新代码以设置状态值?

fetch(config.apiUrl + '/api/user', {
  headers: authHeader(),
  method: 'GET',
})
  .then(function(res) {
    return res.json();
  })
  .then(function(data) {
    this.setState({ id: data.id });
  });

2 个答案:

答案 0 :(得分:2)

您可以使用箭头功能

fetch(config.apiUrl + '/api/user', {
  headers: authHeader(),
  method: 'GET',
})
  .then(res => {
    return res.json();
  })
  .then(data => {
    this.setState({ id: data.id });
  });

或者您可以将this关键字分配给变量并使用它 var that = this;

fetch(config.apiUrl + '/api/user', {
  headers: authHeader(),
  method: 'GET',
})
  .then(function(res) {
    return res.json();
  })
  .then(function(data) {
    that.setState({ id: data.id });
  });

答案 1 :(得分:0)

  • this关键字分配给回调之外的变量,该变量仍然可用。通常使用var self = this;
  • 在您需要的回调中使用'self'。