यदि आपके पास 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
। मेरे पास स्पष्ट करने के लिए एक प्रलेखन मुद्दा खुला है। लेकिन अपने जोखिम या पॉलीफिल पर उपयोग करें।
वेनिला ईएस 5
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% नहीं हूं।) fill()
समाधान के पुराने संस्करण में मेरी गलती को सुधारने के लिए @FakeRainBrigand का धन्यवाद (संशोधन देखें)।
key
सभी मामलों में key
अटेर विकास बिल्ड के साथ एक चेतावनी को कम करता है, लेकिन बच्चे में सुलभ नहीं है। यदि आप बच्चे में उपलब्ध इंडेक्स चाहते हैं, तो आप एक अतिरिक्त एटर पास कर सकते हैं। चर्चा के लिए सूचियाँ और कुंजी देखें ।