【问题标题】:How to access nested json inside jsx component in react native?如何在本机反应中访问jsx组件内的嵌套json?
【发布时间】:2018-06-28 07:34:21
【问题描述】:

我正在尝试列出服务器响应,但我的代码中关于访问嵌套 json 的一些错误..以下是 json 的结构

更新:

  {
    "child": [],
    "courses": [{
        "data": {
            "name": "Student 1",
            "date_created": 1514610451,
            "total_students": 4,
            "seats": "",
            "start_date": false,
            "categories": [{
                "name": "Subject",
                "slug": "Subject"
            }],
            "intro": {
                "id": "1",
                "name": "Main Admin",
                "sub": ""
            },
            "menu_order": 0
        },
        "headers": [],
        "status": 200
    }]
  }

我的反应部分是

render(){
        return this.state.course.map(course =>
        <Text style={styles.userStyle}>{course.courses.data.map(datas => datas.name)}</Text>
        );
    }

请帮我找出错误。我得到this.state.course.map不是一个函数。我的获取请求如下

state= {course:[]};
    componentWillMount(){
        fetch('https://www.mywebsite.com/' + this.props.navigation.state.params.id)
        .then((response) => response.json())
        .then((responseData) => this.setState({course: responseData}))
    }

【问题讨论】:

  • 您的 Json 结构无效。验证你的 json 结构:jsonformatter.curiousconcept.com
  • 不,我得到了一个有效的 json..
  • 你检查过我给出的那个链接吗?因为我得到了无效的json。请通过该链接进行验证
  • 是的。我认为你得到了无效的 json,因为我只粘贴了我的 json 响应中的几行。我会更新它。
  • 我已经更新了我的问题,现在我得到了一个有效的 json,这是一个错字。但是我怎样才能访问数据?

标签: json react-native jsx


【解决方案1】:

因此,您需要向我们展示this.state 的设置方式,但如果您正在执行this.setState(jsonObject) 之类的操作,则您要查找的属性似乎是this.state.courses。这将访问一系列课程。但是,在接下来的几行中,您尝试访问course.courses,这表明您正在设置this.seState({course: jsonObject}) 之类的状态,因此不清楚。

我会说如果你解决了第一个问题,你会立即遇到另一个问题,因为它看起来不像 data 是一个数组而是一个对象,所以尝试调用 map 不太可能做你想做的(除非你一直在玩原型)。

编辑:

针对新信息,我建议如下:

    render(){
         if(this.state.course && this.state.course.courses) {
            return this.state.course.courses.map(course =>
            <Text style={styles.userStyle}>{course.data.name}</Text>
            );
        } else {
           return [];
        }
   }

【讨论】:

  • 是的,我已经更新了我的问题。但我不清楚你刚才说的是什么。错误是在对象上使用 map 方法吗?
  • @NeethuM 编辑了我的答案。是的,您在顶级对象上调用 map,而不是其中的课程数组。
  • 很抱歉,以上都不起作用..我不知道为什么我会遇到同样的错误
  • 那么我认为您的代码中还有其他问题。检查 course 是否为空,在尝试渲染之前响应是否已完成等。您的原始代码存在几个问题,所以我想象其他地方还有更多。
  • 嗯..是的,会彻底检查..但是当我安慰回复时,我得到了它的价值。
猜你喜欢
  • 2019-04-24
  • 1970-01-01
  • 1970-01-01
  • 2022-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-06
  • 1970-01-01
相关资源
最近更新 更多