Slinga i React JSX
Jag försöker göra något som liknar följande i React JSX
(där ObjectRow är en separat komponent):
<tbody>
for (var i=0; i < numrows; i++) {
<ObjectRow/>
}
</tbody>
Jag inser och förstår varför detta inte är giltigt JSX
, eftersom JSX
mappar till funktionsanrop. Men eftersom jag kommer från mallland och är ny i JSX
är jag osäker på hur jag skulle uppnå ovanstående (lägga till en komponent flera gånger).
1126
3
Tänk på det som om du bara anropar JavaScript-funktioner. Du kan inte använda en
for
-slinga där argumenten till ett funktionsanrop skulle hamna:Se hur funktionen
tbody
skickas till enfor
-slinga som argument, och det är naturligtvis ett syntaxfel.Men du kan skapa en array och sedan skicka in den som ett argument:
Du kan använda i princip samma struktur när du arbetar med JSX:
För övrigt är mitt JavaScript-exempel nästan exakt det som JSX-exemplet omvandlas till. Lek lite med Babel REPL för att få en känsla för hur JSX fungerar.
Jag är inte säker på att detta fungerar i din situation, men ofta är map ett bra svar.
Om detta var din kod med for-slingan:
Du skulle kunna skriva den så här med map:
ES6-syntax:
Jag vet att det här är en gammal tråd, men du kanske vill kolla in React Templates, som låter dig använda jsx-mallar i react, med några få direktiv (t.ex. rt-repeat).
Ditt exempel, om du använde react-templates, skulle vara: