React.js 中的 Fragment

react jsjavascript libraryfront end technology更新于 2025/11/7 2:20:17

大多数情况下,我们需要从一个组件返回多个元素。React Fragment 可以帮助我们返回多个元素。另一种方法是使用 div 等 HTML 元素来包裹它们。但是使用额外的 HTML 节点可能会导致一些语义问题。

React.Fragment 示例

render() {
   return (
      <React.Fragment>
      <ElementA />
      <ElementB />
      <ElementC />
      </React.Fragment>
   );
}
The short syntax is <>:
render() {
   return (
      <>
         <ElementA />
         <ElementB />
         <ElementC />
      </>
   );
}

理解不使用 React Fragment 时的问题 −

假设我们创建一个表 −

class ExampleTable extends React.Component {
   render() {
      return (
         <table>
            <tr>
               <ExampleColumns />
            <tr>
         </table>
      );
   }
}
class ExampleColumns extends React.Component {
   render() {
      return (
         <div>
            <td>col 1</td>
            <td>col 2</td>
         </div>
      );
   }
}

实际语法将包含我们在列的返回语句中添加的 div 。

<table>
   <tr>
      <div>
         <td>col 1 </td>
         <td>col 2</td>
      </div>
   </tr>
</table>

现在,table 标签包含一个 div 标签,这破坏了 html 的语义。为了避免这种情况,我们可以简单地用 React.Fragment 替换 div,或者简称为 <>

class ExampleColumns extends React.Component {
   render() {
      return (
         <>
            <td>col 1</td>
            <td>col 2</td>
         </>
      );
   }
}

我们也可以在列表迭代中使用 fragment。

props.myMessages.map(message => (
   // 如果没有 `key`,React 会触发 key 警告
   <React.Fragment key={message.id}>
      <dt>{message.title}</dt>
      <dd>{message.text}</dd>
   </React.Fragment>
))

相关文章


有用资源