React Fragments

2020-03-30  本文已影响0人  灭绝小师弟

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>
      </>
    );
  }
}
上一篇 下一篇

猜你喜欢

热点阅读