[ffxixslh] React - 学习笔记 - Fragments

Fragments

React 中的一个常见模式是一个组件返回多个元素。Fragments 允许你将子列表分组,而无需向 DOM 添加额外节点。

render 函数返回的代码段只能存在一个节点,通常做法是使用 Fragment 或它的短语法 <> </> 包裹代码。当然,它们是等效的。

应用:

场景1:

例如,我们想在 tr 标签中放入 Columns 组件,但是 Columns 组件是用 div 包裹的,导致 trtd 无法成为父子关系,导致渲染错误:

在这里插入图片描述

这时,使用 Fragments 或它的短语法是很有必要的:

import React, { Fragment } from "react";

function Table() {
  return (
    <table>
      <tbody>
        <tr>
          <Columns />
        </tr>
      </tbody>
    </table>
  );
}

function Columns() {
  return (
-    <div>
+    <Fragment>
      <td>Hello</td>
      <td>World</td>
-    </div>
+    </Fragment>
  );
}

export default Table;

场景2:

如果在列表渲染中需要添加 key 值时, 短语法是不支持的。所以,使用 <Fragment> </Fragment> 可以解决添加 key 值的问题。

举个例子,创建一个描述列表:

function Glossary(props) {
  return (
    <dl>
      {props.items.map(item => (
        // 没有`key`,React 会发出一个关键警告
        <React.Fragment key={item.id}>
          <dt>{item.term}</dt>
          <dd>{item.description}</dd>
        </React.Fragment>
      ))}
    </dl>
  );
}

key 是唯一可以传递给 Fragment 的属性。未来我们可能会添加对其他属性的支持,例如事件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值