Esistono diversi modi per farlo. JSX alla fine viene compilato in JavaScript, quindi finché scrivi un JavaScript valido, sarai bravo.
La mia risposta mira a consolidare tutti i meravigliosi modi già presentati qui:
Se non si dispone di una matrice di oggetti, semplicemente il numero di righe:
all'interno del return
blocco, creando un Array
e usando Array.prototype.map
:
render() {
return (
<tbody>
{Array(numrows).fill(null).map((value, index) => (
<ObjectRow key={index}>
))}
</tbody>
);
}
all'esterno del return
blocco, utilizzare semplicemente un normale ciclo for JavaScript:
render() {
let rows = [];
for (let i = 0; i < numrows; i++) {
rows.push(<ObjectRow key={i}/>);
}
return (
<tbody>{rows}</tbody>
);
}
espressione di funzione immediatamente invocata:
render() {
return (
<tbody>
{() => {
let rows = [];
for (let i = 0; i < numrows; i++) {
rows.push(<ObjectRow key={i}/>);
}
return rows;
}}
</tbody>
);
}
Se hai una matrice di oggetti
all'interno del return
blocco, .map()
ogni oggetto a un <ObjectRow>
componente:
render() {
return (
<tbody>
{objectRows.map((row, index) => (
<ObjectRow key={index} data={row} />
))}
</tbody>
);
}
all'esterno del return
blocco, utilizzare semplicemente un normale ciclo for JavaScript:
render() {
let rows = [];
for (let i = 0; i < objectRows.length; i++) {
rows.push(<ObjectRow key={i} data={objectRows[i]} />);
}
return (
<tbody>{rows}</tbody>
);
}
espressione di funzione immediatamente invocata:
render() {
return (
<tbody>
{(() => {
const rows = [];
for (let i = 0; i < objectRows.length; i++) {
rows.push(<ObjectRow key={i} data={objectRows[i]} />);
}
return rows;
})()}
</tbody>
);
}