我实际上无法弄清楚为什么这不起作用,因为我花了比平时多得多的时间来解决这个问题。问题是我使用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;`
答案 0 :(得分:3)
问题是你要覆盖构造函数中的setState
方法,尝试设置这样的初始状态:
this.state = {
allRoutes: {},
selectedRoutes: {}
};
此外,当使用箭头功能时,不需要保存父范围,该功能将在与外部功能相同的范围内运行。