首页 > 解决方案 > Cant' access async nested json in state,得到“TypeError:无法读取未定义的属性'XX'”的错误

问题描述

从 axios 获取数据并将其存储在状态中后,我无法获取嵌套属性。

{
  "a":"hi",
  "b":1,
  "c": {
    "c1":3,
    "c2":"hello",

  }
 }

例如,如果响应是这个并且我使用 this.setState({test:res.data});

我可以使用 this.state.test.a 或 this.state.test.b 来获得“hi”和 1,我也可以使用 this.state.c 来获得 c,但我无法获得c1or c2by this.state.c.c1. 看来我可以添加一个额外的 this.setState({datac:res.data.c});然后使用this.state.datac.c1到达c1,但我可以知道为什么吗?我已经对整个对象进行了测试,为什么不能访问嵌套元素?但我记得有时我可以访问嵌套元素......而这样做的好方法是什么?太感谢了!

标签: javascriptreactjs

解决方案


而且我刚刚发现,如果我将嵌套的 json 作为道具传递给功能组件,该组件可以使用它,但是如果我将它作为道具传递给类组件,则会出现错误。也不知道为什么。


推荐阅读