Skip to main content

Fragment组件

在官方文档中,原文是,“React 中的一个常见模式是一个组件返回多个元素。Fragments 允许你将子列表分组,而无需向 DOM 添加额外节点。”,意思就是你在写组件的时候,外面再套一个Fragments。类似于vue中的template

使用场景:

父组件

class Table extends React.Component {
render() {
return (
<table>
<tr>
<Columns />
</tr>
</table>
);
}
}

如果子组件Columns的代码是这样的话,在<Columns /> 的 render() 中使用了父 div,则生成的 HTML 将无效

class Columns extends React.Component {
render() {
return (
<div>
<td>Hello</td>
<td>World</td>
</div>
);
}
}

Fragments解决了这个问题,Columns组件中加入Fragments后,生成的html就正常了

class Columns extends React.Component {
render() {
return (
<React.Fragment>
<td>Hello</td>
<td>World</td>
</React.Fragment>
);
}
}

在正确的 <Table /> 组件中,这个结果输出如下:

<table>
<tr>
<td>Hello</td>
<td>World</td>
</tr>
</table>