Fragments

Fragments可以理解成:多个片段,多个部分(React元素返回的Fragments)

在此之前,我们开发的组件 return 的都是单个React元素,想要返回多个元素就必须使用父元素包裹这些子元素,然后返回这个父元素。

然而,这并不总是能满足要求的,例如在下述场景中,嵌套div将导致表格不能正常渲染

class Table extends React.Component {render() {return (<table><tr><Columns /></tr></table>)}
}class Columns extends React.Component {render() {<div><td>Hello</td><td>World</td></div>}
}// 渲染后的 <Table />输出
<table><tr><div><td>Hello</td><td>World</td></div></tr>
</table>

Fragments的出现解决了这样的问题,它可以让React组件返回多个元素而不需要嵌套父元素

用法

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

这样table组件就可以正常的渲染了!

短语法

React提供了一种新的,更加简短的语法来声明Fragments,它看起来就是个空标签!

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

你可以像用其他标签一样来使用它,但注意:它不支持key属性

带key的Fragments

使用显式的<React.Fragments>语法可以使用key属性。一个示例场景:将一个数组映射到一个Fragments数组,创建一个描述列表。

function Glossary(props) {return (<div>{props.items.map(item => (<React.Fragment key={item.id}><dt>{item.term}</dt><dd>{item.description}</dd></React.Fragment>))}</div>)
}

key是唯一可以传递给Fragment的属性,未来可能会添加其他属性,比如事件。

06 Fragments相关推荐

  1. 06.ElasticSearch在Java中的使用

    ElasticSearch在Java中的使用 引入依赖 索引.类型和映射的操作 1.创建客户端操作对象 2.创建索引 3.删除索引 4.创建索引.类型和映射 文档的操作 1.准备工作 1. 引入依赖 ...

  2. 06 面向对象之:反射,双下方法

    一.反射 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问.检测和修改它本身状态或行为的一种能力(自省).这一概念的提出很快引发了计算机科学领域关于应用反射性的研究.它首先被程序语 ...

  3. 【跃迁之路】【495天】程序员高效学习方法论探索系列(实验阶段252-2018.06.15)...

    @(跃迁之路)专栏 实验说明 从2017.10.6起,开启这个系列,目标只有一个:探索新的学习方法,实现跃迁式成长 实验期2年(2017.10.06 - 2019.10.06) 我将以自己为实验对象. ...

  4. Java虚拟机JVM学习06 自定义类加载器 父委托机制和命名空间的再讨论

    Java虚拟机JVM学习06 自定义类加载器 父委托机制和命名空间的再讨论 创建用户自定义的类加载器 要创建用户自定义的类加载器,只需要扩展java.lang.ClassLoader类,然后覆盖它的f ...

  5. 【跃迁之路】【425天】刻意练习系列184—SQL(2018.04.06)

    @(跃迁之路)专栏 叨叨两句 技术的精进不能只是简单的刷题,而应该是不断的"刻意"练习 该系列改版后正式纳入[跃迁之路]专栏,持续更新 刻意练习--MySQL 2018.04.02 ...

  6. OD使用教程6 - 调试篇06|解密系列

    OD使用教程6 - 调试篇06 让编程改变世界 Change the world by program   这一讲开始,小甲鱼带大家接触真正程序的逆向.其实也没啥大不了的,也就是对之前所学的知识进行巩 ...

  7. 【青少年编程】【Scratch】06 侦测模块

    06 侦测模块 侦测模块是用来检测场景中某一参数的变化,通过参数变化来为下一步操作提供运行依据.通常与控制模块中的条件语句和循环语句一起使用. 具体分为: 与运动相关的侦测: 与按键相关的侦测: 侦测 ...

  8. 06 Scratch等级考试(一级)模拟题

    Scratch竞赛交流群已成立(适合6至18周岁的青少年),公众号后台回复[Scratch],即可进入.如果加入了之前的社群不需要重复加入. 微信后台回复"资料下载"可获取以往学习 ...

  9. 数据结构与算法:06 线性表

    06 线性表 知识结构: 1. 线性表的定义与操作 1.1 线性表的定义 线性表(Linear List)是由n(n≥0)n (n≥0)n(n≥0)个相同类型的数据元素a0,a1,⋯,an−1a_0, ...

最新文章

  1. 深度学习时间序列预测:卷积神经网络(CNN)算法构建单变量时间序列预测模型预测空气质量(PM2.5)+代码实战
  2. dns短域名会引起nslookup解析总解析到一个IP
  3. java 方法是否需要带参数的情况
  4. CIO需“野蛮生长” 2017中国CIO高峰论坛7月开幕
  5. PhotoGun中文版
  6. Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  7. 前端知识点整理(三)不定时更新~
  8. python多个变量的for循环
  9. php 长整型转字符串 (convert long to string)
  10. 大道至简 读后有感
  11. SQL中Case语句用法讨论
  12. python中整型_实例介绍Python中整型
  13. 将GPS获得的UTC时间转换成本地时间的方法(转)
  14. CCF NOI1076 进制转换
  15. 关于嵌套类的调用更新问题
  16. 阶段3 1.Mybatis_11.Mybatis的缓存_4 mybatis一对多实现延迟加载
  17. oracle创建表空间并赋予权限
  18. 分类与聚类的本质区别
  19. 有关计算机专业工作室的名字,盘点最好听的工作室名字大全
  20. 洛谷P2736 “破锣摇滚”乐队 Raucous Rockers

热门文章

  1. 微信小程序开发---使用云托管,云开发,配置云函数
  2. SQL相关子查询是什么?和嵌套子查询有什么区别?
  3. IOS开发语言Swift入门连载---基本运算符
  4. 6G 第六代移动通信和sub6G第五代移动通信的中低频段
  5. FMpeg分析5:AVCodecContext和AVCodec
  6. 手把手教你做一个多路灰度传感器
  7. amazon linux 安装nginx,amazon-web-services – 如何在amazon linux disto上安装nginx 1.9.15
  8. 在GitHub中的error: failed to push some refs to 仓库地址原因
  9. 绿色创意2.0 探访阿里千岛湖数据中心
  10. 计算机c就业,留学美国:高薪好就业Computer Science(计算机科学)CS专业详解