Попробуйте представить теги как вызовы функций (см. Документацию ). Тогда первый становится:
{[1,2,3].map(function (n) {
return React.DOM.p(...);
})}
И второй:
{[1,2,3].map(function (n) {
return (
React.DOM.h3(...)
React.DOM.p(...)
)
})}
Теперь должно быть ясно, что второй фрагмент на самом деле не имеет смысла (вы не можете вернуть более одного значения в JS). Вам нужно либо обернуть его в другой элемент (скорее всего, то, что вы хотите, таким образом вы также можете предоставить допустимое key
свойство), либо вы можете использовать что-то вроде этого:
{[1,2,3].map(function (n) {
return ([
React.DOM.h3(...),
React.DOM.p(...)
]);
})}
С сахаром JSX:
{[1,2,3].map(function (n) {
return ([
<h3></h3>, // note the comma
<p></p>
]);
})}
Вам не нужно сглаживать полученный массив, React сделает это за вас. См. Следующую скрипку http://jsfiddle.net/mEB2V/1/ . Опять же: объединение двух элементов в div / section, скорее всего, будет лучше в долгосрочной перспективе.