Fragments
React 中的一个常见模式是一个组件返回多个元素。Fragments 允许你将子列表分组,而无需向 DOM 添加额外节点。
类似于微信小程序的block,只是用来包裹元素,不会在页面做任何渲染。
目前key
是唯一可以传递给 Fragment
的属性。未来可能会添加对其他属性的支持,例如事件。
class Table extends React.Component {
render() {
return (
<table>
<tr>
<Columns />
</tr>
</table>
);
}
}
// <Columns /> 需要返回多个 <td> 元素以使渲染的 HTML 有效。
// 如果在 <Columns /> 的 render() 中使用了父 div,则生成的 HTML 将无效。
class Columns extends React.Component {
render() {
return (
<div>
<td>Hello</td>
<td>World</td>
</div>
);
}
}
// 得到的 <Table /> 输出:
<table>
<tr>
<div>
<td>Hello</td>
<td>World</td>
</div>
</tr>
</table>
// 无效
// 使用Fragment,则可以解决这个问题
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>
短语法
使用 <> </>
来声明 Fragments,但是其不支持 key 或属性。
class Columns extends React.Component {
render() {
return (
<>
<td>Hello</td>
<td>World</td>
</>
);
}
}
网友评论