React 中的一个常见模式是一个组件返回多个元素。Fragments 允许你将子列表分组,而无需向 DOM 添加额外节点。
如下示例:Table组件中嵌套了一个子组件Columns
class Table extends React.Component {
render() {
return (
<table>
<tr>
<Columns />
</tr>
</table>
);
}
}
需要返回多个 元素以使渲染的 HTML 有效。如果在
的 render() 中使用了父 div,则生成的 HTML 将无效。
class Columns extends React.Component {
render() {
return (
<div>
<td>Hello</td>
<td>World</td>
</div>
);
}
}
渲染后得到一个
输出如下:<table>
<tr>
<div>
<td>Hello</td>
<td>World</td>
</div>
</tr>
</table>
Fragments解决了该问题。
class Columns extends React.Component {
render() {
return (
<React.Fragment>
<td>Hello</td>
<td>World</td>
</React.Fragment>
);
}
}
这样就可以正确的输出
<table>
<tr>
<td>Hello</td>
<td>World</td>
</tr>
</table>
短语法:我们可以使用一种新的,且更简短的语法来声明 Fragments。它看起来像空标签
class Columns extends React.Component {
render() {
return (
<>
<td>Hello</td>
<td>World</td>
</>
);
}
}
我们可以像使用任何其他元素一样使用 <> </>,除了它不支持 key 或属性。
祝大家变得更强!