反应错误-无法读取未定义的属性'setState'

时间:2020-01-13 21:35:05

标签: javascript reactjs react-native

以下代码为我返回错误 未捕获(承诺)TypeError:无法读取未定义的属性“ setState”

我是新来的反应者,这似乎很基础。任何建议,我可能做错了什么。从json结果中,我想将所有名称存储在数组中。

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
     })
  })
}

2 个答案:

答案 0 :(得分:1)

这是React中类的一个非常常见的问题-有两种方法可以解决此问题:

  1. 在构造函数中绑定方法:
constructor(props) {
  super(props);

  this.state = {
    list: [],
  }

  this.Search = this.Search.bind(this);
}
  1. 改为使用箭头功能:
search = () => { ... }

有关更多信息,请参见this post

注意:使用componentDidMount()很有用,如果您尝试在挂载上进行访存调用-上面的答案解决了this未被定义的问题。您看到的错误。

答案 1 :(得分:0)

componentDidMount()添加到Search(),在安装组件(插入树中)后立即调用它。需要DOM节点的初始化应该放在这里。这是从远程端点加载数据的好地方。