当前位置: 首页 > 面试题库 >

如何渲染重复的React元素?

楮景明
2023-03-14
问题内容

我已经写了一些代码来渲染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);
              })
            )
          );
        })
      )
    )
  );
}


 类似资料:
  • 我写了一些代码来呈现ReactJS中的重复元素,但我讨厌它有多丑。 有没有更好的方法来实现这一点? (我想在模板代码或类似的方法中嵌入循环。)

  • 我无法呈现一个selectOneMenu,但只能禁用该项目 例如,这是可行的: 而这个不是: 有什么建议吗 谢谢

  • 主要内容:实例,实例,实例,实例元素是构成 React 应用的最小单位,它用于描述屏幕上输出的内容。 与浏览器的 DOM 元素不同,React 当中的元素事实上是普通的对象,React DOM 可以确保 浏览器 DOM 的数据内容与 React 元素保持一致。 将元素渲染到 DOM 中 首先我们在一个 HTML 页面中添加一个 id="example" 的 <div>: 在此 div 中的所有内容都将由 React DOM 来管

  • 我是新的反应,也对stackoverflow, 我正在尝试将 this.state.searchResults 呈现为附加代码 代码运行时没有任何错误,但是没有呈现。我到底做错了什么? 我在我的主js文件中导出这个组件。如果我不使用map方法运行,它会正确地渲染。 请帮帮忙 代码图像

  • 问题内容: 如何获得元素的渲染高度? 假设您的元素内部包含一些内容。内部的内容将扩大的高度。当您没有明确设置高度时,如何获得“渲染的”高度。显然,我尝试过: 有这样做的技巧吗?如果有帮助,我正在使用jQuery。 问题答案: 应该是 jQuery。这将以数字形式检索包装集中的第一个项目的高度。 尝试使用 仅当您首先将属性设置为有效。不是很有用!

  • 因此,在去年与react合作之后,我设法理解了它的功能和注意事项,以及如何避免不必要的渲染。 昨天我在玩一些代码,遇到了一个以前没有看到的问题,有点困惑。 在上面的代码中,我添加了一个简单的计数器,每次单击都会设置一个新的状态,这会导致重新渲染,在屏幕上显示“Count:1”,并在dev工具中显示一个“counter render”日志,就像我预期的那样。 奇怪的部分来自渲染变量,我用数字0启动(