React Native this2.state 错误

React Native this2.state error

我正在尝试获取 GET 请求的响应(这是一个对象数组),并将其状态设置为一个数组 'templates',以便我稍后可以使用 [=20= 访问它],像这样:

  fetch('https://tiy-warmup.herokuapp.com/api/templates?token=' + 
  token)
  .then(response => response.json())
  .then(response => this.setState({templates: response}))
  // .then(response => console.log(response))

当我注释掉 setState 行并仅在控制台记录响应时,我得到了正确的数组,所以我知道我的提取是好的。但是,当我尝试 运行 setState 行时,出现此错误:

Possible Unhandled Promise Rejection (id: 0):
_this2.setState is not a function

解决此错误并能够在渲染中使用 this.state.templates 的解决方案是什么?

Possible Unhandled Promise Rejection

发生此错误是因为您没有实现 catch 您的承诺

.catch(error  => {
  console.log('There has been a problem with your fetch operation: '+ error.message);
});

无论您在何处使用此提取,请绑定函数或更改为箭头函数。 this 未绑定到组件,因此 this.setState 引发错误。显示未处理的承诺拒绝错误,因为您没有设置 catch 语句来处理错误。

_this2.setState is not a function,通常,你的 this 不是你组件的 ref,启动调试器并仔细检查什么是 this ref。我想你可能会使用 bindconst self = this 来解决这个问题。

看看这个post可能对你有帮助,https://www.sitepoint.com/bind-javascripts-this-keyword-react/