Détails
Boucle dans React JSX
J'essaie de faire quelque chose comme ce qui suit dans React JSX
(où ObjectRow est un composant séparé) :
<tbody>
for (var i=0; i < numrows; i++) {
<ObjectRow/>
}
</tbody>
Je réalise et comprends pourquoi ce n'est pas un JSX
valide, puisque JSX
correspond à des appels de fonction. Cependant, comme je viens du monde des modèles et que je suis novice en matière de JSX
, je ne sais pas comment je pourrais réaliser ce qui précède (ajouter un composant plusieurs fois).
1126
3
Pensez-y comme si vous appeliez simplement des fonctions JavaScript. Vous ne pouvez pas utiliser une boucle
for
où iraient les arguments d'un appel de fonction :Vous voyez que la fonction
tbody
reçoit une bouclefor
comme argument, et bien sûr, c'est une erreur de syntaxe.Mais vous pouvez créer un tableau, et le passer comme argument :
Vous pouvez utiliser fondamentalement la même structure lorsque vous travaillez avec JSX :
D'ailleurs, mon exemple JavaScript est presque exactement ce en quoi cet exemple de JSX se transforme. Jouez avec [Babel REPL] (https://babeljs.io/repl) pour vous faire une idée du fonctionnement de JSX.
Je ne suis pas sûr que cela convienne à votre situation, mais souvent [map][1] est une bonne réponse.
Si c'était votre code avec la boucle for :
Vous pourriez l'écrire comme ceci avec [map][1] :
Syntaxe ES6 :
[1] : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map
Je sais que c'est un vieux sujet, mais vous pourriez vouloir vérifier [React Templates][1], qui vous permet d'utiliser des modèles de style jsx dans react, avec quelques directives (comme rt-repeat).
Votre exemple, si vous avez utilisé react-templates, serait :
[1] : http://wix.github.io/react-templates/