问题
我是新来的反应并尝试实现一个简单的for循环,如另一个stackoverflow帖子所示。但是,我似乎无法让它工作。我只想运行组件 5 次(或任意次数),而不是映射到数组或类似的。
例如:
index.js:
- import React, { Component } from 'react';
- import { render } from 'react-dom';
- import './style.css';
- import Test from './test';
- class App extends Component {
- constructor() {
- super();
- this.state = {
- name: 'React'
- };
- }
- render() {
- return (
- <div>
- for (var i=0; i < 5; i++) {
- <Test />
- }
- </div>
- );
- }
- }
- render(<App />, document.getElementById('root'));
复制代码
测试.js
- import React from "react";
- export default function Test() {
- return (
- <p>test</p>
- );
- }
复制代码
有人可以告诉我哪里出错了吗?我尝试过复制另一个 stackoverflow 帖子并尝试过 test() 。我仍然收到此错误:
感谢您的帮助。
回答
JSX 将接受任何有效的 JavaScript 表达式、声明式编程和命令式编程,也许这个源代码可以帮助你。您可以创建一个声明性解决方案,正如其他同事所展示的(以及最佳解决方案),但也可以将您的命令式解决方案包装到一个函数或方法中。
- const Test = () => {
- return (
- <p>test</p>
- );
- }
- class App extends React.Component {
- constructor() {
- super();
- this.state = {
- name: 'React'
- };
- }
- createElements = () => {
- const elments = [];
- for (var i=0; i < 5; i++) {
- elments.push(<Test />)
- }
- return elements;
- }
- render() {
- return (
- <div>
- {this.createElements()}
- </div>
- );
- }
- }
- // Render it
- ReactDOM.render(
- <App />,
- document.getElementById("react")
- );
复制代码- <div id="react"></div>
- <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>
复制代码
|