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

单线工作正常
render: function () {
  return (
    {[1,2,3].map(function (n) {
      return <p>{n}</p>
    }}
  );
}

不适用于多行

render: function () {
  return (
    {[1,3].map(function (n) {
      return (
        <h3>Item {n}</h3>
        <p>Description {n}</p>
      )
    }}
  );
}

谢谢。

尝试将标签视为函数调用(参见 docs)。然后第一个变成:
{[1,3].map(function (n) {
  return React.DOM.p(...);
})}

第二个:

{[1,3].map(function (n) {
  return (
    React.DOM.h3(...)
    React.DOM.p(...)
  )
})}

现在应该清楚,第二个片段没有真正有意义(你不能在JS中返回多个值)。你必须将它包装在另一个元素(很可能是你想要的,那样你还可以提供一个有效的键属性),或者你可以使用这样的东西:

{[1,3].map(function (n) {
  return ([
    React.DOM.h3(...),React.DOM.p(...)
  ]);
})}

用JSX糖:

{[1,3].map(function (n) {
  return ([
    <h3></h3>,// note the comma
    <p></p>
  ]);
})}

你不需要展平结果数组,React会为你做这些。参见下面的小调http://jsfiddle.net/mEB2V/1/.再次:将两个元素包装到一个div / section将很可能是更好的长期。

相关文章

一、前言 在组件方面react和Vue一样的,核心思想玩的就是组件...
前言: 前段时间学习完react后,刚好就接到公司一个react项目...
前言: 最近收到组长通知我们项目组后面新开的项目准备统一技...
react 中的高阶组件主要是对于 hooks 之前的类组件来说的,如...
我们上一节了解了组件的更新机制,但是只是停留在表层上,例...
我们上一节了解了 react 的虚拟 dom 的格式,如何把虚拟 dom...