React Native Flatlist - 如何遍历嵌套对象

Jam*_*esG 1 javascript react-native react-native-flatlist nested-object

我有一个从文件中返回的 JSON 对象./jsonData.json

在此文件中,我有以下数据:

注意:这是从文件加载的整个 JSON 数据。

import QuizData from './quizData.json'
Run Code Online (Sandbox Code Playgroud)

这是一个新应用程序,QuizData以下所有内容也是如此:

[
    {
        "id": 1,
        "name": "Lesson 1",
        "topics": [
            {
                "topicID": 1,
                "topicName": "Science",
                "topicDescription": "Science quiz questions"
            },
            {
                "topicID": 2,
                "topicName": "General Knowledge",
                "topicDescription": "General Knowledge Quiz Questions"
            }
        ]
    }
]
Run Code Online (Sandbox Code Playgroud)

我正在尝试为找到的每个主题获取主题名称并将其作为文本发布。

这是我的代码:

<FlatList
    data={QuizData}
    renderItem={({ item, index }) =>
        <View>
            <Text>{item.topics.topicName}</Text>
        </View>
    }
    keyExtractor={(item) => item.topicID.toString()}
/>
Run Code Online (Sandbox Code Playgroud)

我也试过:

{item.topics.[index].topicName}
Run Code Online (Sandbox Code Playgroud)

{item.topics[index][topicName]}
Run Code Online (Sandbox Code Playgroud)

但我收到错误:

undefined 不是一个对象。

然后我认为它可能需要:

data={QuizData.topics}
Run Code Online (Sandbox Code Playgroud)

然后将 renderItem 更改为:

{item.topicName}
Run Code Online (Sandbox Code Playgroud)

这次没有错误,但也没有向屏幕输出文本。

mof*_*des 5

你可以做这样的事情

import * as React from 'react';
import { Text, View, FlatList } from 'react-native';

import data from './data.json';

export default function App() {
  return (
    <FlatList
      data={data}
      renderItem={({ item, index }) => (
        <View>
          {item.topics.map((v, i) => (
            <>
              <Text>{v.topicName}</Text>
              <Text>{v.topicDescription}</Text>
            </>
          ))}
        </View>
      )}
    />
  );
}
Run Code Online (Sandbox Code Playgroud)

data.json根目录中包含您的数据的 json 文件在哪里。

  • 因为在 React / React Native 中,所有内容都必须位于一个父标签下。通常你会看到很多空的`&lt;View&gt;`标签。空标签让我们用空标签括住两个返回值,但不会渲染任何内容。它被称为片段。您可以在这里了解更多信息 https://reactjs.org/docs/fragments.html (2认同)