美文网首页
React Fragments

React Fragments

作者: 灭绝小师弟 | 来源:发表于2020-03-30 16:46 被阅读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>
          </>
        );
      }
    }
    

    相关文章

      网友评论

          本文标题:React Fragments

          本文链接:https://www.haomeiwen.com/subject/bfvvuhtx.html