找回密码
 立即注册
ReactrenderTestimport | 软件设计/软件工程 2022-05-04 239 0star收藏 版权: . 保留作者信息 . 禁止商业使用 . 禁止修改作品
问题
我是新来的反应并尝试实现一个简单的for循环,如另一个stackoverflow帖子所示。但是,我似乎无法让它工作。我只想运行组件 5 次(或任意次数),而不是映射到数组或类似的。


例如:

index.js:
  1. import React, { Component } from 'react';
  2. import { render } from 'react-dom';
  3. import './style.css';
  4. import Test from './test';

  5. class App extends Component {
  6.   constructor() {
  7.     super();
  8.     this.state = {
  9.       name: 'React'
  10.     };
  11.   }

  12.   render() {
  13.     return (
  14.       <div>
  15.         for (var i=0; i < 5; i++) {
  16.         <Test />
  17.     }
  18.       </div>
  19.     );
  20.   }
  21. }

  22. render(<App />, document.getElementById('root'));
复制代码

测试.js
  1. import React from "react";

  2. export default function Test() {
  3.   return (
  4.     <p>test</p>
  5.   );
  6. }
复制代码

有人可以告诉我哪里出错了吗?我尝试过复制另一个 stackoverflow 帖子并尝试过 test() 。我仍然收到此错误:

感谢您的帮助。

回答
JSX 将接受任何有效的 JavaScript 表达式、声明式编程和命令式编程,也许这个源代码可以帮助你。您可以创建一个声明性解决方案,正如其他同事所展示的(以及最佳解决方案),但也可以将您的命令式解决方案包装到一个函数或方法中。
  1. const Test = () => {
  2.   return (
  3.     <p>test</p>
  4.   );
  5. }

  6. class App extends React.Component {
  7.   constructor() {
  8.     super();
  9.     this.state = {
  10.       name: 'React'
  11.     };
  12.   }

  13.   createElements = () => {
  14.     const elments = [];
  15.     for (var i=0; i < 5; i++) {
  16.       elments.push(<Test />)
  17.     }
  18.     return elements;
  19.   }

  20.   render() {
  21.     return (
  22.       <div>
  23.         {this.createElements()}
  24.       </div>
  25.     );
  26.   }
  27. }

  28. // Render it
  29. ReactDOM.render(
  30.   <App />,
  31.   document.getElementById("react")
  32. );
复制代码
  1. <div id="react"></div>
  2. <script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
  3. <script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
复制代码






上一篇:递归函数来反转字符串中的子字符串
下一篇:在新选项卡中打开 URL(不是新窗口)