我正在尝试构建一些react应用程序,在该应用程序中,我将一些对象推送到一个数组中,然后将此数组设置为react组件状态。问题是这不起作用,这是我的代码-
var busArray = []
if(apiResponse.length > 0)
{
for(var i in apiResponse) {
if("ns3:VehicleLocation" in apiResponse[i]["ns3:MonitoredVehicleJourney"][0]) {
var busInfoObject = {"lineNo": apiResponse[i]["ns3:MonitoredVehicleJourney"][0]["ns3:PublishedLineName"][0],
"operatorCode": apiResponse[i]["ns3:MonitoredVehicleJourney"][0]["ns3:OperatorRef"][0],
"lat": apiResponse[i]["ns3:MonitoredVehicleJourney"][0]["ns3:VehicleLocation"][0]["ns3:Latitude"][0],
"lng": apiResponse[i]["ns3:MonitoredVehicleJourney"][0]["ns3:VehicleLocation"][0]["ns3:Longitude"][0]
}
busArray.push(busInfoObject)
}
}
}
else {
console.log("No busses nearby detected")
}
console.log(busArray)
this.setState({busRealTimeInfo: busArray}, ()=> console.log(this.state.busRealTimeInfo))
正如您所看到的,我尝试将最终的数组写入控制台以查看结果,我看到了这个奇怪的数组,它有一个长度,但内部是空的-
有人知道这是什么吗?为什么会发生这种情况?
UPDATE我尝试将console.log(busArray)更改为console.log(busArray),它实际上打印了真正的信息,但仍然无法将数组推送到状态,并且整个数组打印到控制台为空。
有人见过这样的问题吗?
发布于 2018-09-23 04:27:40
根据小提琴,看起来您在shouldComponentUpdate检查中意外地重置了数组。
shouldComponentUpdate(nextProps, nextState) {
if (nextState.busRealTimeInfo.length = 0 ...
应该是
shouldComponentUpdate(nextProps, nextState) {
if (nextState.busRealTimeInfo.length === 0 ...
https://stackoverflow.com/questions/52444267
复制相似问题