React浅析Fragments使用方法

目录
  • 概述
  • 动机
  • 短语法
  • 带key 的Fragments

概述

  • 可以将子列表分组,而无需向DOM添加额外节点
  • 简单理解:空标签
  • <React.Fragment></React.Fragment> 或 <></>
render() {
  return (
    <React.Fragment>
      <ChildA />
      <ChildB />
      <ChildC />
    </React.Fragment>
  )
}

动机

  • 以下面的代码为例,如果Columns组件返回多个td元素才能实现效果,但是如果我们在Columns组件中使用了div父元素,则会使td元素失效。Fragment则可以解决这个问题。
//table.js
const Table = () => {
  render() {
    return (
      <table>
        <tr>
          <Columns />
        </tr>
      </table>
    )
  }
}
//columns.js
const Columns = () => {
 render() {
    return (
      <div>
        <td>Hello</td>
        <td>World</td>
      </div>
    )
  }
}
//以上代码输出:
<table>
  <tr>
    <div>
      <td>Hello</td>
      <td>World</td>
    </div>
  </tr>
</table>
//此时 td 是失效的,可以使用Fragemengt解决这个问题
//用法:
//columns.js
const Columns = () => {
 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 或属性
const Cloumns = () => {
render() {
    return (
      <>
        <td>Hello</td>
        <td>World</td>
      </>
    )
  }
}

带key 的Fragments

  • 使用显式 <React.Fragment> 语法声明的片段可能具有 key
  • key 是唯一可以传递给 Fragment 的属性
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>
  )
}

到此这篇关于React浅析Fragments使用方法的文章就介绍到这了,更多相关React Fragments内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 详解React中Fragment的简单使用

    目录 react 中的 Fragment 标签渲染 Fragment 标签 Fragment 标签和 <></> 区别 react 中的 Fragment 今天说的这一小节超级简单,但是呢,不说还不行,因为在实际开发项目当中你会确确实实的发现有这样一个使用场景,很多人都会写,所以说尽管不影响我们的实际开发,但别人确实会这样操作,为了能更好的看清项目代码,稍微提一嘴吧. 标签渲染 Fragment 标签的使用啊超级简单,就 <Fragment></Fragment&

  • React Fragment介绍与使用详解

    目录 前言 Fragments出现动机 React Fragment介绍与使用 <React.Fragment> 与 <>区别 前言 在向 DOM 树批量添加元素时,一个好的实践是创建一个document.createDocumentFragment,先将元素批量添加到 DocumentFragment 上,再把 DocumentFragment 添加到 DOM 树,减少了 DOM操作次数的同时也不会创建一个新元素. 和 DocumentFragment 类似,React 也存在

  • React浅析Fragments使用方法

    目录 概述 动机 短语法 带key 的Fragments 概述 可以将子列表分组,而无需向DOM添加额外节点 简单理解:空标签 <React.Fragment></React.Fragment> 或 <></> render() { return ( <React.Fragment> <ChildA /> <ChildB /> <ChildC /> </React.Fragment> ) } 动机

  • 浅析jquery unbind()方法移除元素绑定的事件

    unbind()方法可以移除元素已绑定的事件,它的调用格式如下: $(selector).unbind(event,fun) 其中参数event表示需要移除的事件名称,多个事件名用空格隔开,fun参数为事件执行时调用的函数名称. 语法  unbind()函数主要有以下两种形式的用法: 用法一: jQueryObject.unbind( [ events [, handler ]] ) 移除当前匹配元素的events事件绑定的事件处理函数handler. 用法二: jQueryObject.unb

  • Webpack 4.x搭建react开发环境的方法步骤

    本文介绍了了Webpack 4.x搭建react开发环境的方法步骤,分享给大家,也给自己留个笔记 必要依赖一览(npm install) 安装好. "dependencies": { "babel-core": "^6.26.3", "babel-loader": "^7.1.5", "babel-preset-env": "^1.7.0", "react&

  • 详解React路由传参方法汇总记录

    React中传参方式有很多,通过路由传参的方式也是必不可少的一种. 本文记录项目中会用到的路由传参方式: 路由跳转传参API + 目标路由获取参数的方式. 一.动态路由 跳转方法 Link <Link to={{ pathname: "/user/add/1" }}>跳转新增页面</Link> history.push this.props.history.push("/user/add/1"); 获参方法 this.props.match.

  • React forwardRef的使用方法及注意点

    之前使用react.forwardRef始终无法应用于react高阶组件中,最近终于捣鼓出来了,于是记录下来.关键点就是React.forwardRef的API中ref必须指向dom元素而不是React组件. React.forwardRef使用示例 下面就是应用到React组件的错误示例: const A=React.forwardRef((props,ref)=><B {...props} ref={ref}/>) 这就是我之前经常犯的错误, 这里的ref是无法生效的. 前面提到re

  • Electron集成React和Vue流程方法讲解

    目录 集成React 1. 热调试 2. 打包 集成Vue 集成React 1. 热调试 在React项目目录下安装Electron npm install electron 修改package.json文件,增加或将已有的main属性值修改为main.js,在scriptes中添加"electron-start": "electron .",最终配置文件如下: { "name": "electron-react", &quo

  • React网络请求发起方法详细介绍

    目录 1. 发起网络请求 2. 开发时网络请求代理配置 1. 发起网络请求 首先需要安装 axios 库: yarn add axios 发起网络请求: import React, { Component } from 'react' import { get } from './utils/http' import Loading from './components/Loading' class App extends Component { state = { users: null }

  • Electron打包React生成桌面应用方法详解

    目录 一.Electron简介 二.搭建准备 三.创建基本应用程序 四.打包项目 一.Electron简介 Electron是一个能让你使用JavaScript,HTML和CSS来创建桌面应用程序的框架.这些应用程序可以打包后在 macOS.Windows 和 Linux 上直接运行. 在目前浏览器和移动端盛行的互联网环境下,跨平台的桌面应用开发,也为前端提供了一个新分支方向. 二.搭建准备 1.检查git和node是否安装完成 git --versionnode -vnpm -v 2.搭建Re

  • nginx配置React静态页面的方法教程

    前言 本文主要给大家介绍了关于nginx配置React静态页面的相关内容,文中给大家详细介绍了关于nginx的安装以及一些基本操作,然后给大家分享了React 静态页面 nginx 配置简洁版的示例代码,下面话不多说了,来一起看看详细的介绍吧. 关于nginx的安装启动以及80端口被占用的解决方法,大家也可以参考这篇文章:http://www.jb51.net/article/110291.htm 第一步:安装 1.http://nginx.org/en/download.html 下载 2.t

  • Ajax同步和异步问题浅析及解决方法

    通过ajax向后台发送和接收数据时,常常会出现同步异步问题.由于ajax是默认异步加载的,但有时候需要同步或者同步的效果,有以下两种解决方案. 方案一:将某些方法放在回调函数中执行,即,等到从后台返回成功后再执行. 例: $.getJSON("/data-access/sens-config/IPandPortSel",{},function(resp){ if(resp.code==0){ $.each(resp.data,function(i,obj){ option_net_ty

随机推荐