React setState函数

时间:2017-06-26 20:31:51

标签: javascript reactjs

我实际上无法弄清楚为什么这不起作用,因为我花了比平时多得多的时间来解决这个问题。问题是我使用axios进行REST调用以获取要呈现的数据。在块内处理响应,即使我能够检索数据'this'对象以某种方式无法引用正确的对象,我得到一个错误。我不知道为什么会这样,但是对它的任何帮助都将受到高度赞赏。

在下方发布我的代码段。我已经尝试在axios调用范围之外保存它的上下文并使用了新变量,但这也无济于事。这是我在控制台中遇到的错误

  

TypeError:_this2.setState不是函数

import React, {Component} from 'react';

import axios from 'axios';

import './RouteList.css';

class RouteList extends Component{
constructor(){
    super();        
    this.setState = {
        allRoutes: {},
        selectedRoutes: {}
    };
    }    

componentDidMount(){
    const that = this;
    //Retrieve the SF-Muni route list        
    axios.get('http://webservices.nextbus.com/service/publicJSONFeed?command=routeList&a=sf-muni')
        .then(response => {
            console.log(response);
            that.setState({ allRoutes: response.data.routes });
        })
        .catch((error) => {
            console.log(error);
        });            
}

render(){
    return (
        <div className="transit-routes">
            {/*TODO-Code to render data.*/}
        </div>
    );
}
}
export default RouteList;`

1 个答案:

答案 0 :(得分:3)

问题是你要覆盖构造函数中的setState方法,尝试设置这样的初始状态:

this.state = {
    allRoutes: {},
    selectedRoutes: {}
};

此外,当使用箭头功能时,不需要保存父范围,该功能将在与外部功能相同的范围内运行。