Có nhiều cách để làm điều này. Cuối cùng, JSX được biên dịch thành JavaScript, miễn là bạn viết JavaScript hợp lệ, bạn sẽ ổn.
Câu trả lời của tôi nhằm củng cố tất cả những cách tuyệt vời đã được trình bày ở đây:
Nếu bạn không có một mảng đối tượng, chỉ cần số lượng hàng:
trong return
khối, tạo Array
và sử dụng Array.prototype.map
:
render() {
return (
<tbody>
{Array(numrows).fill(null).map((value, index) => (
<ObjectRow key={index}>
))}
</tbody>
);
}
bên ngoài return
khối, chỉ cần sử dụng vòng lặp JavaScript bình thường:
render() {
let rows = [];
for (let i = 0; i < numrows; i++) {
rows.push(<ObjectRow key={i}/>);
}
return (
<tbody>{rows}</tbody>
);
}
ngay lập tức gọi biểu thức hàm:
render() {
return (
<tbody>
{() => {
let rows = [];
for (let i = 0; i < numrows; i++) {
rows.push(<ObjectRow key={i}/>);
}
return rows;
}}
</tbody>
);
}
Nếu bạn có một mảng các đối tượng
trong return
khối, .map()
mỗi đối tượng<ObjectRow>
thành phần:
render() {
return (
<tbody>
{objectRows.map((row, index) => (
<ObjectRow key={index} data={row} />
))}
</tbody>
);
}
bên ngoài return
khối, chỉ cần sử dụng vòng lặp JavaScript bình thường:
render() {
let rows = [];
for (let i = 0; i < objectRows.length; i++) {
rows.push(<ObjectRow key={i} data={objectRows[i]} />);
}
return (
<tbody>{rows}</tbody>
);
}
ngay lập tức gọi biểu thức hàm:
render() {
return (
<tbody>
{(() => {
const rows = [];
for (let i = 0; i < objectRows.length; i++) {
rows.push(<ObjectRow key={i} data={objectRows[i]} />);
}
return rows;
})()}
</tbody>
);
}