反应-setState不更新数组

时间:2018-11-11 21:54:04

标签: javascript reactjs state

这是我的代码:

class App extends Component {
  state = {
    query: '',
    results: []
  }
  handleSearch(e) {
    var query = e.target.elements.query.value;
   axios.get("http://www.omdbapi.com/?s=" + query + "&page=1&apikey=xxxx")
      .then(function (response) {
        console.log(response.data);
        this.setState({
          results: response.data.Search
        });
      }.bind(this))
      .catch(function (error) {
      });
    e.preventDefault();
  }

我正在尝试从 omdb 中获取数据并将其显示在页面上。

问题是setState无法更新数组results

有什么主意吗?谢谢

1 个答案:

答案 0 :(得分:1)

您绑定了axios请求正确完成时调用的函数,但是您还必须绑定handleSearch方法本身。您可以在构造函数中执行此操作,或者改为使用类属性arrow函数:

class App extends Component {
  state = {
    query: '',
    results: []
  }

  handleSearch = (e) => {
    // ...
  }
}