TypeError:无法设置未定义的属性“ setState”。反应

时间:2018-08-24 16:27:06

标签: reactjs

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

,但API的响应未推送searchResponse。并显示错误:TypeError:无法设置未定义的属性'setState'。

如何解决这个问题?

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

2 个答案:

答案 0 :(得分:0)

this.setState = {user_input}是错误的。 setState是一个应具有的功能:

this.setState({user_input});

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

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

在您的代码中找不到setState=({searchResponse:response.data})的任何提及,但由于相同的问题,它可能会失败。

答案 1 :(得分:0)

如果需要访问.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);
            });
    }