javascript - 将对象推送到数组不适用于 JavaScript react

标签 javascript arrays reactjs

我正在尝试构建一些 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))

如您所见,我尝试将最终数组写入控制台以查看结果,我看到这个奇怪的数组,它有长度但内部为空 -

enter image description here

有人知道这是什么吗?以及为什么会发生这种情况?

更新 我尝试将 console.log(busArray) 更改为 console.log(busArray[0]) ,它实际上打印了真实的信息,但仍然无法将数组插入状态并将整个数组作为空打印到控制台.. enter image description here

有人见过这样的问题吗?

最佳答案

根据 fiddle ,看起来您不小心在 shouldComponentUpdate 检查中重置了数组。

 shouldComponentUpdate(nextProps, nextState) {
        if (nextState.busRealTimeInfo.length = 0 ...

应该是

shouldComponentUpdate(nextProps, nextState) {
            if (nextState.busRealTimeInfo.length === 0 ...

关于javascript - 将对象推送到数组不适用于 JavaScript react ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52444267/

相关文章:

arrays - 运算符 Array#<< 以 reduce 的简写形式失败

javascript - React store.getState 不是函数

visual-studio - 改进 Visual Studio 2017 中的 JSX 编辑

javascript - node.js 模块中的自动导出函数

javascript - 设置选择选项的默认值

c++ - 创建指向结构数组指针数组的指针,然后访问结构中的变量

css - meteor 类型错误 : require(. ..).addStyles 不是函数

javascript - HighCharts - HightStock 带有滚动导航器的倒轴

javascript - React中的增量 float 、字符串转换、状态表示

c++ - C++过滤掉数组中的重复值