Essayez de considérer les balises comme des appels de fonction (voir la documentation ). Alors le premier devient:
{[1,2,3].map(function (n) {
return React.DOM.p(...);
})}
Et le second:
{[1,2,3].map(function (n) {
return (
React.DOM.h3(...)
React.DOM.p(...)
)
})}
Il devrait maintenant être clair que le deuxième extrait de code n'a pas vraiment de sens (vous ne pouvez pas renvoyer plus d'une valeur dans JS). Vous devez soit l'envelopper dans un autre élément (très probablement ce que vous voudriez, de cette façon vous pouvez également fournir une key
propriété valide ), ou vous pouvez utiliser quelque chose comme ceci:
{[1,2,3].map(function (n) {
return ([
React.DOM.h3(...),
React.DOM.p(...)
]);
})}
Avec du sucre JSX:
{[1,2,3].map(function (n) {
return ([
<h3></h3>, // note the comma
<p></p>
]);
})}
Vous n'avez pas besoin d'aplatir le tableau résultant, React le fera pour vous. Voir le violon suivant http://jsfiddle.net/mEB2V/1/ . Encore une fois: envelopper les deux éléments dans une div / section sera probablement mieux à long terme.