【问题标题】:TypeError: Cannot set property 'setState' of undefined. reactTypeError:无法设置未定义的属性“setState”。反应
【发布时间】:2019-01-31 04:04:32
【问题描述】:

我确实从 NYTimes API 获取数据并在控制台记录它们。 我的初始状态是 {searchResponse: null} 然后设置状态响应 this.setState=({searchResponse:response.data}); 并将其传递给另一个名为 listview_component 的组件。在那个组件中,我处理 prop 的 null 值。

但是来自 API 的响应没有推送到 searchResponse。并显示错误:TypeError: Cannot set property 'setState' of undefined.

如何解决?

请查看此代码 https://github.com/shojibMahabub/news-scroller/tree/develop

【问题讨论】:

    标签: reactjs


    【解决方案1】:

    this.setState = {user_input} 是错误的。 setState 应该是一个函数:

    this.setState({user_input});
    

    最重要的是,您忘记在构造函数中绑定函数:

     this.handle_user_input = this.handle_user_input.bind(this);
    

    我在您的代码中找不到任何提及 setState=({searchResponse:response.data}),但它可能因为同样的问题而失败。

    【讨论】:

      【解决方案2】:

      如果需要访问.this,将函数转换为粗箭头函数。

      do_search = (keyword) => {
              axios
                  .get(
                      url, // takes the variable url
                      {
                          params: {
                              api_key: api_key,
                              q: keyword
                          }
                      }
                  )
                  .then(response => {
                      console.log(response);
                      this.setState=({searchResponse:response.data});
                  })
                  .catch(function(error) {
                      console.log(error);
                  });
          }
      

      【讨论】:

        猜你喜欢
        • 2018-08-13
        • 2020-09-07
        • 2017-01-01
        • 2018-10-06
        • 1970-01-01
        • 2017-05-30
        • 2017-10-30
        相关资源
        最近更新 更多