首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >反应本机2.状态错误

反应本机2.状态错误
EN

Stack Overflow用户
提问于 2017-04-18 23:09:19
回答 3查看 1.6K关注 0票数 0

我试图从GET请求(这是一个对象数组)获取响应,并将其状态设置为数组“模板”,以便以后可以使用this.state.templates访问它,如下所示:

代码语言:javascript
复制
  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行注释掉并只记录响应时,我会得到正确的数组,因此我知道我的fetch是好的。但是,当我尝试运行setState行时,会得到以下错误:

代码语言:javascript
复制
Possible Unhandled Promise Rejection (id: 0):
_this2.setState is not a function

避免这个错误并能够在呈现中使用this.state.templates的解决方案是什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-04-18 23:46:06

无论您在何处使用此fetch,都可以绑定该函数或更改为箭头函数。this没有绑定到组件,因此this.setState抛出了一个错误。未处理的允诺拒绝错误正在显示,因为您没有设置catch语句来处理错误。

票数 0
EN

Stack Overflow用户

发布于 2017-04-19 00:49:15

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

看看这篇文章也许对你有帮助,https://www.sitepoint.com/bind-javascripts-this-keyword-react/

票数 0
EN

Stack Overflow用户

发布于 2017-04-18 23:36:04

可能未处理的拒绝承诺

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

代码语言:javascript
复制
.catch(error  => {
  console.log('There has been a problem with your fetch operation: '+ error.message);
});
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43483666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档