Javascript 反应错误-无法读取属性';设置状态';未定义的
下面的代码为我返回一个错误 未捕获(承诺中)TypeError:无法读取未定义的属性“setState” 我是一个新的反应,这似乎是非常基本的。任何关于我可能做错什么的建议。根据json结果,我希望将所有名称存储在数组中Javascript 反应错误-无法读取属性';设置状态';未定义的,javascript,reactjs,react-native,Javascript,Reactjs,React Native,下面的代码为我返回一个错误 未捕获(承诺中)TypeError:无法读取未定义的属性“setState” 我是一个新的反应,这似乎是非常基本的。任何关于我可能做错什么的建议。根据json结果,我希望将所有名称存储在数组中 import React, { Component } from "react"; class Search extends Component { constructor(props) { super(props); this.state = { lis
import React, { Component } from "react";
class Search extends Component {
constructor(props) {
super(props);
this.state = {
list: [],
}
}
Search() {
fetch("http://url/getSearchResults")
.then(res => res.json())
.then(
(res) => {
this.setState({
list: res.data.name
})
})
}
将
componentDidMount()
添加到Search()
,在装入组件(插入到树中)后立即调用它。需要DOM节点的初始化应该在这里进行。这是从远程端点加载数据的好地方。这是React中类的一个非常常见的问题-有两种方法可以解决此问题:
注意:使用
componentDidMount()
如果您试图在mount上进行fetch调用,将非常有用-上面的答案解决了此
未根据您看到的错误定义的问题。似乎是此
的问题。您能显示调用搜索
的位置吗?将搜索声明为箭头函数:搜索=()=>{…}
。请参阅以了解更多信息。刚刚注意到您的类和方法被称为同一事物-我强烈建议保持方法名称与组件名称的唯一性。这是否回答了您的问题?关于堆栈溢出,有很多很多问题,关于在Promise的then
方法中未定义的这个。您研究了其中哪一个,为什么没有解决您的问题?在使用ECMAScript 2015类时,您所描述的内容是不必要的。如果原型方法是用类主体定义的,那么原型方法可以访问此。()这就是说,您所做的格式设置极大地澄清了OP试图做的事情是毫无意义的,我的回答是错误的。@ChrisThompson OP似乎已经消失了,所以如果您在构造函数中注释掉绑定,那么我们可能永远也不会知道——不管我的帖子是如何引用的,调用函数时,可以看到相同的错误。无论哪种方式,都会有很多困惑。。哈哈,JavaScript不是很棒吗?!是的,这种联系是有道理的。这样做的原因是,它们随后将其作为函数传递(而不是提供一个箭头函数,然后调用该函数)。如果他们打算使用类似的()=>this.handleClick()
调用,那么就没有必要了。但是你是对的,在非绑定的情况下,你会得到完全相同的错误
constructor(props) {
super(props);
this.state = {
list: [],
}
this.Search = this.Search.bind(this);
}
search = () => { ... }