reactjs - 在 ListView React Native 中循环嵌套数组对象

标签 reactjs react-native react-native-listview

我目前正在尝试使用react-native..

我想创建一个 ListView ,从 var 获取数据源,其中包含一个内部嵌套数组的对象。

var questionArray = [
  {
    question: "What is the emotion of the user? choose all that apply!",
    answerArray: [
      { name: "Cheerful", status: true, answered: false },
      { name: "Impulsive", status: false, answered: false },
      { name: "Firm", status: false, answered: false },
      { name: "Merry", status: true, answered: false },
      { name: "Jumpy", status: false, answered: false },
      { name: "Energetic", status: false, answered: false },
      { name: "Glowing", status: false, answered: false },
      { name: "Animated", status: false, answered: false },
      { name: "Lively", status: false, answered: false },
      { name: "Creepy", status: false, answered: false },
      { name: "Excited", status: true, answered: false },
      { name: "Tense", status: false, answered: false },
      { name: "Unrestful", status: false, answered: false },
      { name: "Pleased", status: true, answered: false },
      { name: "Unrestful", status: false, answered: false },
      { name: "Hasty", status: false, answered: false },
      { name: "Delighted", status: true, answered: false },
      { name: "Hedonistic", status: false, answered: false },
      { name: "Eager", status: false, answered: false },
      { name: "Joyful", status: false, answered: false },
    ]
  },
  {
    question: "What is the best way to describe this person's character? Choose all that apply.",
answerArray: [
      { name: "Cheerful", status: true, answered: false },
      { name: "Impulsive", status: false, answered: false },
      { name: "Firm", status: false, answered: false },
      { name: "Merry", status: true, answered: false },
      { name: "Jumpy", status: false, answered: false },
      { name: "Energetic", status: false, answered: false },
      { name: "Glowing", status: false, answered: false },
      { name: "Animated", status: false, answered: false },
      { name: "Lively", status: false, answered: false },
      { name: "Creepy", status: false, answered: false },
      { name: "Excited", status: true, answered: false },
      { name: "Tense", status: false, answered: false },
      { name: "Unrestful", status: false, answered: false },
      { name: "Pleased", status: true, answered: false },
      { name: "Unrestful", status: false, answered: false },
      { name: "Hasty", status: false, answered: false },
      { name: "Delighted", status: true, answered: false },
      { name: "Hedonistic", status: false, answered: false },
      { name: "Eager", status: false, answered: false },
      { name: "Joyful", status: false, answered: false },
    ]
  }
];

我在 render ListView 中调用了这个变量,它触发了 renderRow 函数..

 _renderRow( rowData, sectionID, rowID ) {
    return (
      <View>
        <Text>{rowData.question}</Text>
        <Text>{rowData.answerArray[0].name}</Text>
      </View>
    );
  }

  render() {
    return (
        <View> 
          <ListView 
            dataSource={this.state.dataSource}
            renderRow={this._renderRow.bind(this)}
          />
        </View>
    );
  }

如何渲染此 listView 内的循环? 即使当我像上面的代码一样对索引进行硬编码时,它也不起作用..

谢谢。

最佳答案

您应该制作两个单独的组件:问题答案

I've made a Codepen for you as an example, using your data

首先,我将 questionsArray 作为 prop 传递给 ListView 组件:

class Application extends React.Component {
  render() {
    return (
      <div>
        { questionsArray.map((question, key) => <ListView key={`listview-${key}`} question={question} />) }
      </div>
    );
  }
}

然后,您可以将答案传递给 ListViewItem 组件,如下所示:

class ListView extends React.Component {
  render() {
    return (
      <div>
        {this.props.question.question}
        {this.props.question.answerArray.map((answer, key) => <ListViewItem answer={answer} />)}
      </div>
    );
  }
}

这是ListViewItem:

class ListViewItem extends React.Component {
  render() {
    return (
      <div>
        {this.props.answer.name}
      </div>
    );
  }
}

关于reactjs - 在 ListView React Native 中循环嵌套数组对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43113544/

相关文章:

javascript - 如何在react js中检查所选选项

Android Application Emulator 在 React Native 上不断停止

react-native - 带星号的导入在 React Native 中有何作用?

android - 在 React Navigation 中如何更新状态 goBack

react-native - react 原生数据表

reactjs - 类型错误 : Cannot read property 'getState' of null

javascript - 如何更改 graphql 端点 url 名称

android - 在 react native ListView 上显示多种类型的行的正确方法是什么?

react-native - 如何在 react-native 中显示 ListView,其中登录用户的等级应该始终可见

javascript - 如何在 ReactJS 中单击时仅切换元素集合中的一个元素?