Якщо у вас ще немає масиву, який map()
би подобався відповіді @ FakeRainBrigand, і ви хочете вкласти це так, щоб макет джерела відповідав висновку ближче, ніж відповіді @ SophieAlpert:
За допомогою синтаксису ES2015 (ES6) (функції розповсюдження та стрілки)
http://plnkr.co/edit/mfqFWODVy8dKQQOkIEGV?p=preview
<tbody>
{[...Array(10)].map((x, i) =>
<ObjectRow key={i} />
)}
</tbody>
Щодо: перекладаючи Вавилон, його сторінка застережень говорить про те, що Array.from
потрібно для поширення, але в даний час ( v5.8.23
), схоже, це не так, коли розповсюдження є фактичним Array
. У мене проблема з документацією відкрите щодо щоб уточнити це. Але використовуйте на свій страх і ризик або поліфіл.
Ваніль 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>
);
}
За допомогою синтаксису та Array
методів ES2015
З цим Array.prototype.fill
ви можете зробити це як альтернативу використанню спред, як показано вище:
<tbody>
{Array(10).fill(1).map((el, i) =>
<ObjectRow key={i} />
)}
</tbody>
(Я думаю, ви насправді можете пропустити будь-який аргумент fill()
, але я не на 100% з цього приводу.) Завдяки @FakeRainBrigand за виправлення моєї помилки в попередній версії fill()
рішення (див. Версії ).
key
У всіх випадках key
attr знімає попередження при створенні розвитку, але не доступне для дитини. Ви можете передати додатковий attr, якщо хочете, щоб індекс був доступний дитині. Див. Списки та ключі для обговорення.