【问题标题】:React Native Loop Json Response反应本机循环 Json 响应
【发布时间】:2020-03-27 08:05:27
【问题描述】:

我有这样的 json 数据,但出现错误,如何解决?我的代码: 我想在“节点”中显示数据,但首先我想在 console.log 中检查它,但出现错误

constructor(props){
        super(props);
        this.state = {
            kasus_baru: {},
            isError : false,
            isLoading : true,
        };

    }

axios.get('xxxxxx')
    .then(res=>{
        const data_kasus = res.data;

        this.setState({kasus_baru : data_kasus });
        //console.log(this.state.kasus_baru)
        this.state.kasus_baru.nodes.map((obj,i) => {
            console.log(obj[i].kasus);
        }); 
    })

以下是回复:

{
"data": {
    "nodes": [{
            "id": 1,
            "kasus": 1,
            "klaster": "DKI JAKARTA",
        },
        {
            "id": 2,
            "kasus": 2,
            "klaster": "DKI JAKARTA",
        }
    ]
}

}

为什么我得到这个错误?

[未处理的承诺拒绝:TypeError:未定义不是对象 (评估'_this2.state.kasus_baru.nodes.map')]

【问题讨论】:

    标签: javascript react-native undefined


    【解决方案1】:

    显示您尝试访问对象的代码。正如此响应所说,您正在尝试访问当前对象中不存在其键的对象。例如,您正在尝试访问像

    这样的密钥

    data.nodes.id 会抛出异常。你需要访问它 data.nodes[index].id

    【讨论】:

    • 检查节点的长度,如果大于0,则在react中迭代并创建组件
    【解决方案2】:

    您收到错误的原因是您尝试映射的对象未定义。

    this.state.kasus_baru.nodes.map((obj,i) => { 控制台.log(obj[i].kasus); });

    我强烈建议您调试您的代码并查看您的 JSON 响应是否有效,并且在访问对象的属性时验证它们是否存在。

    意思是,检查.nodes是kasus_baru的实际属性。

    你可以这样做

    kasus_baru.hasOwnProperty("nodes")

    另外,如果您有响应中的对象,为什么要通过状态访问它?

    更新(由于 OP 的评论)

    您遇到的问题不是循环遍历节点,而是看到您从请求中收到的数据是有效的。

    为了做到这一点,我会做以下事情:

    axios.get('xxxxxx')
    .then(res=>{
        const data_kasus = res.data;
        if (data_kasus.hasOwnProperty('nodes')) {
          var nodes = data_kasus['nodes'];
          for(let index = 0; index < nodes.length; index++) {
               var node = nodes[index];
               //Do your logic here...
          } //end for
        } // end if
    })
    

    【讨论】:

    • 如何在“节点”中循环该数据先生?
    • @KaretNasiPadang - 我根据您的评论更新了我的答案。
    【解决方案3】:

    我已经解决了这个问题, 答案是我必须在收到回复后添加 .data

    .then(res=>{
            const data_kasus = res.data.data;
    })
    

    响应数据:

    {
    "data": {
        "nodes": [{
                "id": 1,
                "kasus": 1,
                "klaster": "DKI JAKARTA",
            },
            {
                "id": 2,
                "kasus": 2,
                "klaster": "DKI JAKARTA",
            }
        ]
    }
    

    因为 json 响应有数据键。

    感谢所有帮助我的人

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-05
      • 2021-04-10
      相关资源
      最近更新 更多