Spróbuj myśleć o tagach jako o wywołaniach funkcji (zobacz dokumentację ). Wtedy pierwszy staje się:
{[1,2,3].map(function (n) {
return React.DOM.p(...);
})}
A drugi:
{[1,2,3].map(function (n) {
return (
React.DOM.h3(...)
React.DOM.p(...)
)
})}
Powinno być teraz jasne, że drugi fragment kodu tak naprawdę nie ma sensu (nie możesz zwrócić więcej niż jednej wartości w JS). Musisz albo zawinąć go w inny element (najprawdopodobniej to, co chcesz, w ten sposób możesz również podać prawidłową keywłaściwość) lub możesz użyć czegoś takiego:
{[1,2,3].map(function (n) {
return ([
React.DOM.h3(...),
React.DOM.p(...)
]);
})}
Z cukrem JSX:
{[1,2,3].map(function (n) {
return ([
<h3></h3>, // note the comma
<p></p>
]);
})}
Nie musisz spłaszczać wynikowej tablicy, React zrobi to za Ciebie. Zobacz następujące skrzypce http://jsfiddle.net/mEB2V/1/ . Ponownie: zawinięcie dwóch elementów w div / section będzie najprawdopodobniej lepsze na dłuższą metę.