Jeśli nie masz jeszcze tablicy, która map()
polubiłaby odpowiedź @ FakeRainBrigand, i chcesz to wstawić, aby układ źródłowy odpowiadał wynikowi bliżej niż odpowiedź @ SophieAlpert:
Ze składnią ES2015 (ES6) (funkcje rozkładania i strzałek)
http://plnkr.co/edit/mfqFWODVy8dKQQOkIEGV?p=preview
<tbody>
{[...Array(10)].map((x, i) =>
<ObjectRow key={i} />
)}
</tbody>
Re: transpilacja z Babel, jego strona z zastrzeżeniami mówi, że Array.from
jest to wymagane do rozprzestrzeniania, ale obecnie ( v5.8.23
) nie wydaje się tak w przypadku rozpowszechniania faktów Array
. Mam problem z dokumentacją, aby to wyjaśnić. Ale używaj na własne ryzyko lub wypełniacz.
Vanilla ES5
Array.apply
<tbody>
{Array.apply(0, Array(10)).map(function (x, i) {
return <ObjectRow key={i} />;
})}
</tbody>
Inline 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>
Połączenie technik z innych odpowiedzi
Zachowaj układ źródłowy odpowiadający wynikowi, ale spraw, aby wstawiana część była bardziej zwarta:
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>
);
}
Ze składnią ES2015 i Array
metodami
Dzięki temu Array.prototype.fill
możesz to zrobić jako alternatywę dla spreadu, jak pokazano powyżej:
<tbody>
{Array(10).fill(1).map((el, i) =>
<ObjectRow key={i} />
)}
</tbody>
(Myślę, że faktycznie można pominąć każdy argument fill()
, ale nie jestem w 100% tego zdania.) Dzięki @FakeRainBrigand za naprawienie mojego błędu we wcześniejszej wersji fill()
rozwiązania (zobacz wersje).
key
We wszystkich przypadkach key
attr łagodzi ostrzeżenie dzięki kompilacji programistycznej, ale nie jest dostępne u dziecka. Możesz przekazać dodatkowe attr, jeśli chcesz, aby indeks był dostępny dla dziecka. Zobacz Listy i klucze do dyskusji.