如何渲染重复的 React 元素?

2023-11-30

我已经编写了一些代码来在 ReactJS 中渲染重复元素,但我讨厌它有多难看。

render: function(){
  var titles = this.props.titles.map(function(title) {
    return <th>{title}</th>;
  });
  var rows = this.props.rows.map(function(row) {
    var cells = [];
    for (var i in row) {
      cells.push(<td>{row[i]}</td>);
    }
    return <tr>{cells}</tr>;
  });
  return (
    <table className="MyClassName">
      <thead>
        <tr>{titles}</tr>
      </thead>
      <tbody>{rows}</tbody>
    </table>
  );
} 

有更好的方法来实现这一目标吗?

(我想嵌入for模板代码中的循环,或一些类似的方法。)


您可以将表达式放在大括号内。请注意在编译后的 JavaScript 中为什么for在 JSX 语法中循环永远不可能; JSX 相当于函数调用和加糖函数参数。只允许使用表达式。

(另外:记得添加key循环内渲染的组件的属性。)

JSX + ES2015:

render() {
  return (
    <table className="MyClassName">
      <thead>
        <tr>
          {this.props.titles.map(title =>
            <th key={title}>{title}</th>
          )}
        </tr>
      </thead>
      <tbody>
        {this.props.rows.map((row, i) =>
          <tr key={i}>
            {row.map((col, j) =>
              <td key={j}>{col}</td>
            )}
          </tr>
        )}
      </tbody>
    </table>
  );
} 

JavaScript:

render: function() {
  return (
    React.DOM.table({className: "MyClassName"}, 
      React.DOM.thead(null, 
        React.DOM.tr(null, 
          this.props.titles.map(function(title) {
            return React.DOM.th({key: title}, title);
          })
        )
      ), 
      React.DOM.tbody(null, 
        this.props.rows.map(function(row, i) {
          return (
            React.DOM.tr({key: i}, 
              row.map(function(col, j) {
                return React.DOM.td({key: j}, col);
              })
            )
          );
        })
      )
    )
  );
} 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何渲染重复的 React 元素? 的相关文章

随机推荐

  • 如何将字符串日期转换为长毫秒

    我在字符串中有一个日期 例如 12 December 2012 如何将其转换为毫秒 长 Using 简单日期格式 String string date 12 December 2012 SimpleDateFormat f new Simp
  • 为数据表中的计算列定义 DateDiff

    我有 日期时间已过期 列 我想创建另一个名为 已过期 的列 该列将根据过期日期显示 是 或 否 如果日期已过 则显示 是 我写了这个 DataColumn colExpirationDate new DataColumn DateTimeE
  • 重新计算动态布局属性

    这是一个可调整大小的窗口 设置动态布局属性 以便顶部组框调整宽度大小 下部组 框和树以及 3 个按钮在两个维度上调整大小 对于高级复选框 我添加了代码来隐藏额外的控件并调整关联框的高度 所以它看起来像这样 用于切换控制值的代码是 void
  • 删除或更新模拟器上的 Google Play 服务

    我编写了一个使用谷歌地图 API v2 的 Android 应用程序 我想在模拟器上测试它 但为了显示地图它有一点问题 我用谷歌搜索并找到了文章 我必须将其安装到软件包 vending apk android gms apk 中 我下载了软
  • Hammer.js 无法删除事件监听器

    我创建了一个锤子实例 如下所示 var el document getElementById el var hammertime Hammer el 然后我可以添加一个监听器 hammertime on touch function e c
  • jQuery :使用已弃用的 .toggle() 替代方法

    我有一些类名为 mute btn 的图像 当我单击它们时 我的图像源正在更改 mute btn toggle function var clicked false var src this attr src src src replace
  • Winform 应用程序名称在 Windows 10 任务管理器的“启动”选项卡上显示为 _alphanumeric

    在 Windows 10 上 我的表单应用程序显示为字母数字字符 1F036AE84FF792FB79A74F 启动选项卡 in 任务管理器 它是一个MSI安装文件 以下是运行 exe 的路径 C Users win10user AppDa
  • jQuery 如果 DIV 没有类“x”

    在 jQuery 中 我需要执行一个 if 语句来查看 this 是否不包含类 selected thumbs hover function this stop fadeTo normal 1 0 function this stop fa
  • PCM:无法访问合作伙伴

    按照快速入门指南操作时 合作伙伴连接管理器 PCM 出现问题 采取的步骤 启用智能设备管理API 配置 OAuth 权限屏幕 添加了 智能设备管理 API auth sdm service 的范围 为新的 Web 服务器创建 OAuth 令
  • JavaScript函数将unicode伪字母转换为常规字符?

    我正在尝试编写一个函数 该函数接受包含 unicode 伪字母表中的字符的任何字符串 并返回一个等效字符串 其中这些字符已替换为 ASCII 中的常规字符 const toRegularCharacters s gt toRegularCh
  • 读取内存中的exe文件并执行

    是否可以使用Windows将文件读入内存 将数据保存在字节数组中 从文件系统中删除原始文件并从内存中执行它 EDIT 我的目标是保护我的 java 代码免受逆向工程的影响 我用 C 编写了一个启动器 它获取加密的 jar 文件 解密并启动它
  • Tensorflow:如何编码和读取bmp图像?

    我正在尝试读取 bmp 图像 对这些图像进行一些增强 将它们保存到 tfrecords 文件中 然后打开 tfrecords 文件并使用这些图像进行图像分类 我知道有一个 tf image encode jpeg 和一个 tf image
  • Android 调用“requestWindowFeature( Window.FEATURE_PROGRESS );”时出错在活动中

    我正在尝试在 Android 活动中显示 WebView 的加载进度 当我尝试使用以下命令显示窗口的进度条时 requestWindowFeature Window FEATURE PROGRESS as per http develope
  • 如何为 HTML 页面创建渐变背景

    我正在学习 HTML 为 HTML 页面创建渐变背景的最佳方法是什么 到目前为止 这是我的背景 body style background color Powderblue 我知道这不是渐变 这不能在 html 中完成 但可以在 css 特
  • 发送推送通知 Firebase React-JS

    我正在开发一个使用 Firebase 云消息传递反应的项目 我正在将其发送到我的服务器 但它不起作用 当然我已经尝试过了 但我不知道又出了什么问题 下面是代码 这里它发送一个POST向 Firebase 请求 它应该向用户发送通知 asyn
  • Java:将文件名分为基本名和扩展名

    有没有比类似的方法更好的方法来获取文件基名和扩展名 File f String name f getName int dot name lastIndexOf String base dot 1 name name substring 0
  • 属性 [Bind(Exclude="")] 无法防止过度发布

    防止 MVC 4 过度发布的最佳方法是什么 根据 MS 的消息来源 Bind 属性应该是通过阻止传入的表单值进入数据库来防止过度发布的最简单方法 使用最新版本的 MVC 和 EF 这似乎并没有按预期 宣传的那样工作 除非我错过了一些重要的东
  • 使用 Codeigniter 分页库“显示 X 到 Y 的 Z 结果”?

    我正在使用 Codeigniter 分页库 我想知道如何获取使用分页类显示的第一个和最后一个项目的数量 所以 如果我有 12 个结果 并且 per page 设置为 5 我想要 Page 1 Displaying 1 to 5 of 12
  • 如何将Windows SDK添加到Eclipse C工具中?

    我为 Java 开发人员使用 Eclipse Juno 并且想向其中添加 C C 功能 我下载了 Windows SDK 并尝试创建 Hello World C 项目 但 Eclipse 似乎看不到 Windows SDK 所以我无法编译我
  • 如何渲染重复的 React 元素?

    我已经编写了一些代码来在 ReactJS 中渲染重复元素 但我讨厌它有多难看 render function var titles this props titles map function title return th title t