หากคุณยังไม่มีอาร์เรย์ที่map()
ชอบคำตอบของ @ FakeRainBrigand และต้องการอินไลน์เพื่อให้เค้าโครงแหล่งที่มาสอดคล้องกับเอาต์พุตใกล้กว่าคำตอบของ @ SophieAlpert:
ด้วย ES2015 (ES6) ไวยากรณ์ (ฟังก์ชั่นการแพร่กระจายและลูกศร)
http://plnkr.co/edit/mfqFWODVy8dKQQOkIEGV?p=preview
<tbody>
{[...Array(10)].map((x, i) =>
<ObjectRow key={i} />
)}
</tbody>
Re: transpiling กับบาเบลของหน้าคำเตือนบอกว่า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>
);
}
ด้วยไวยากรณ์และ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 พิเศษถ้าคุณต้องการให้ดัชนีมีอยู่ในเด็ก ดูรายการและกุญแจสำหรับการสนทนา