如何在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

