javascript - 尝试遍历 React 中的多个组件

标签 javascript arrays reactjs react-router react-redux

我正在尝试循环遍历 React 中的多个组件。本质上,我希望问题能够像 https://iteratehq.com/ 上的 Lapsed User 示例一样循环和转换。 .

这是组件将循环的主页面:

import React from 'react';
import Q1Name from './questions/Q1Name';
import Q2Birthday from './questions/Q2Birthday';
import Q3City from './questions/Q3City';
import Q4YouReady from './questions/Q4YouReady';
import Q5Setting from './questions/Q5Setting';
import Q6Length from './questions/Q6Length';
import Q7Email from './questions/Q7Email';



class SignUpPage extends React.Component {
    render() {
        const questions = [Q1Name, Q2Birthday, Q3City, Q4YouReady, Q5Setting, Q6Length, Q7Email];
        const QList = questions.map(function(question){
            return {question};
        });
        return (
            <div className = "container-fluid">
                <div className = "question-box">
                    <Q1Name />
                </div>
            </div>
        );
    }
}

export default SignUpPage;

下面是我想引入的示例组件 - 请注意每个问题都略有不同。他们接受姓名、电子邮件(经过验证)、城市、生日(日期形式)和各种按钮回答选项。

import React from 'react';

class Q1Name extends React.Component {
    render() {
        return (
            <div className="questions">
                <h1 id="question-h1">What is your name?</h1>
                <form>
                    <div className="form-group">
                        <input type="name" className="form-control text-form custom-form" id="yourNameHere" aria-describedby="name" placeholder="" />
                    </div>
                    <button type="submit" className="btn btn-custom btn-lg" onClick={console.log("hallo")}>Next Question!</button>
                </form>
            </div>
        );
    }
}

export default Q1Name;

除了这部分,我已经能够让其他一切正常工作。任何帮助将不胜感激!!

最佳答案

这是您的要求的简单演示。关键是在循环中创建一个 JSX 元素(<Component />),然后通过 render 返回结果。方法。

class A extends React.Component {
  render() {
    return <div>I'm A, with {this.props.testProp}</div>;
  }
}

class B extends React.Component {
  render() {
    return <div>I'm B, with {this.props.testProp}</div>;
  }
}

class App extends React.Component {
  render() {
    const components = [A, B];
    const componentsToRender = components.map((Component, i) => (
      <Component key={i} testProp="testProp"/>
    ));
    return <div>{componentsToRender}</div>;
  }
}
ReactDOM.render(<App />, document.getElementById("app"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="app"></div>

注意特殊 key 的用法prop,在循环中创建组件时。我只是出于演示目的使用了数组中的索引,但建议使用该组件始终唯一的索引。更多关于 here .

关于javascript - 尝试遍历 React 中的多个组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48493582/

相关文章:

javascript - 信号员 - 与不同的客户

javascript - 如何获取仅包含 Google Drive 中文件夹的直接子级的FolderIterator

javascript - React-native 以编程方式滚动多行 TextInput

javascript - 路由/重定向不在 React Router 4 和 Redux 授权中呈现

javascript - Console.log 不可变的 JS

javascript - jQuery,循环段落并获取文本

arrays - JSON 列表(不是对象)到 Bash 数组?

c++ - 复制数组和冒泡排序 C++

javascript - D3.js 中的数据操作

css - 如何使用 React 更改选定表格行的背景颜色