如果您还没有map()
喜欢@FakeRainBrigand的答案的数组,并且想要内联它,那么源布局将比@SophieAlpert的答案更接近输出:
使用ES2015(ES6)语法(扩展和箭头功能)
http://plnkr.co/edit/mfqFWODVy8dKQQOkIEGV?p=preview
<tbody>
{[...Array(10)].map((x, i) =>
<ObjectRow key={i} />
)}
</tbody>
回复:使用Babel进行转译时,其警告页面说这Array.from
是传播所必需的,但目前(v5.8.23
)在传播实际值时似乎并非如此Array
。我有一个文档问题需要澄清。但是使用后果自负或使用polyfill。
香草ES5
Array.apply
<tbody>
{Array.apply(0, Array(10)).map(function (x, i) {
return <ObjectRow key={i} />;
})}
</tbody>
内联IIFE
http://plnkr.co/edit/4kQjdTzd4w69g8Suu2hT?p=preview
<tbody>
{(function (rows, i, len) {
while (++i <= len) {
rows.push(<ObjectRow key={i} />)
}
return rows;
})([], 0, 10)}
</tbody>
其他答案的技术组合
保持源布局与输出相对应,但使内联部分更紧凑:
render: function () {
var rows = [], i = 0, len = 10;
while (++i <= len) rows.push(i);
return (
<tbody>
{rows.map(function (i) {
return <ObjectRow key={i} index={i} />;
})}
</tbody>
);
}
使用ES2015语法和Array
方法
通过Array.prototype.fill
这种方法,您可以代替上面所示的点差进行操作:
<tbody>
{Array(10).fill(1).map((el, i) =>
<ObjectRow key={i} />
)}
</tbody>
(我认为您实际上可以省略对的任何参数fill()
,但我并不是100%这样。)感谢@FakeRainBrigand在fill()
解决方案的早期版本(请参阅修订)中纠正了我的错误。
key
在所有情况下,key
attr都会减轻开发版本的警告,但在子级中无法访问。如果希望子级中的索引可用,则可以传递一个额外的attr。请参阅列表和键进行讨论。