如何在React中的另一个return语句中返回多行JSX?

单行工作正常

render: function () {

return (

{[1,2,3].map(function (n) {

return <p>{n}</p>

}}

);

}

不适用于多行

render: function () {

return (

{[1,2,3].map(function (n) {

return (

<h3>Item {n}</h3>

<p>Description {n}</p>

)

}}

);

}

谢谢。

回答:

尝试将标签视为函数调用(请参阅docs)。然后第一个变成:

{[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中将很可能会更好。

以上是 如何在React中的另一个return语句中返回多行JSX? 的全部内容, 来源链接: utcz.com/qa/412563.html

回到顶部