map()
@ FakeRainBrigand'ın cevabını beğenecek bir diziniz yoksa ve bunu satır içi yapmak istiyorsanız, kaynak düzeni @ SophieAlpert'in cevabından daha yakın çıktıya karşılık gelir:
ES2015 (ES6) sözdizimi ile (forma ve ok işlevleri)
http://plnkr.co/edit/mfqFWODVy8dKQQOkIEGV?p=preview
<tbody>
{[...Array(10)].map((x, i) =>
<ObjectRow key={i} />
)}
</tbody>
Re: Babel ile nakil, uyarılar sayfasıArray.from
yayılması için gerekli olduğunu söylüyor , ancak şu anda ( v5.8.23
) gerçek bir yayılırken böyle görünmüyor Array
. Bunu açıklığa kavuşturmak için açık bir dokümantasyon sorunum var. Ancak kendi sorumluluğunuzdadır veya çoklu dolgu kullanın.
Vanilya ES5
Array.apply
<tbody>
{Array.apply(0, Array(10)).map(function (x, i) {
return <ObjectRow key={i} />;
})}
</tbody>
Satır içi 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>
Diğer cevaplardan tekniklerin kombinasyonu
Kaynak düzenini çıktıya karşılık gelen şekilde tutun, ancak satır içi parçayı daha kompakt yapın:
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 sözdizimi ve Array
yöntemleri ile
Bunu Array.prototype.fill
, yukarıda gösterildiği gibi yayılmaya alternatif olarak yapabilirsiniz:
<tbody>
{Array(10).fill(1).map((el, i) =>
<ObjectRow key={i} />
)}
</tbody>
(Aslında herhangi bir argümanı atlayabileceğini düşünüyorum fill()
, ama bunun üzerinde% 100 değilim.) @FakeRainBrigand'a, fill()
çözümün önceki bir sürümündeki hatamı düzelttiği için teşekkürler (düzeltmelere bakın).
key
Her durumda, key
attr geliştirme derlemesi ile ilgili bir uyarıyı hafifletir, ancak çocukta erişilebilir değildir. Dizinin alt öğede kullanılabilir olmasını istiyorsanız fazladan bir attr iletebilirsiniz. Tartışma için Listeler ve Anahtarlar'a bakın .