0

0

React顶层API是什么?react的顶层api的详细介绍

寻∝梦

寻∝梦

发布时间:2018-09-11 11:55:50

|

2054人浏览过

|

来源于php中文网

原创

Q.AI视频生成工具
Q.AI视频生成工具

支持一分钟生成专业级短视频,多种生成方式,AI视频脚本,在线云编辑,画面自由替换,热门配音媲美真人音色,更多强大功能尽在QAI

下载

本篇文章主要的讲述了关于react的顶层api的介绍,下面就让我们一起来阅读这篇文章吧

React 是 React 库的入口。如果你用 <script></script> 标签来加载 React,这些顶级 API 都在React 这个全局变量上。如果你在 npm 下使用 ES6 ,你可以这样写 import React from 'react' 。如果你在 npm 下使用 ES5,你可以这样写var React = require('react')

概述

组件(Components)

React 组件允许你将UI拆分为独立的可重用的模块,并且每个模块逻辑也是独立的。 React组件可以通过扩展 React.ComponentReact.PureComponent 来定义。

  • React.Component

  • React.PureComponent

如果你不使用 ES6 类(classes),你也可以使用 create-react-class 模块来替代。 查看 不使用 ES6 的 React 以获取更多相关信息。

创建 React 元素

我们建议 使用 JSX 来描述你的 UI 应该是什么样。每个 JSX 元素都是调用 React.createElement() 的语法糖。 如果使用 JSX ,你不必显示地调用下面的方法。

  • createElement()

  • createFactory()

查阅 不使用 JSX 的 React 获取更多信息。

转换元素

React 还提供了一些其他的 API :

  • cloneElement()

  • isValidElement()

  • React.Children

片段(Fragments)

React 还提供了一个用于渲染多个元素而没有包裹元素的组件。

  • React.Fragment

参考

React.Component

React.Component 是 React 组件使用 ES6 类(classes) 定义时的基类。

class Greeting extends React.Component {
  render() {
    return <h1>Hello, {this.props.name}</h1>;
  }}

有关 React.Component 基类相关的方法和属性,请参阅React.Component API参考。

React.PureComponent

React.PureComponentReact.Component 完全相同,但是在shouldComponentUpdate()中实现时,使用了 props 和 state 的浅比较。

如果你的React组件的 render() 函数在给定相同 props 和 state 情况下渲染相同的结果,在某些情况下,你可以使用React.PureComponent来提高性能。

注意:

React.PureComponentshouldComponentUpdate() 仅对对象进行浅比较。 如果这些包含复杂的数据结构,它可能会在更深层数据差异比较时发生判断偏差。 所以扩展PureComponent 只能用于具有简单 props 和 state 的组件,或者在知道深层数据结构已更改时使用forceUpdate() 来强制更新的组件。 或者,考虑使用不可变对象来帮助嵌套数据的快速比较。

再者,React.PureComponentshouldComponentUpdate() 方法跳过了整个组件子树的 props 更新。所以确保所有的子组件也是“pure”。

createElement()

React.createElement(
  type,
  [props],
  [...children])

创建并返回一个新的给定类型的 React 元素 。这个 type(类型) 参数可以是一个标签名字字符串(例如 'p''span'),或者是一个 React 组件 类型(一个类或者是函数),或者一个 React fragment 类型。

使用 JSX 编写的代码将被转成使用 React.createElement() 。 如果您使用JSX,则你可以不必显示地直接调用 React.createElement()。 请参阅不使用 JSX 的 React 了解更多信息。

cloneElement()

React.cloneElement(
  element,
  [props],
  [...children]
)

使用 element 作为起点,克隆并返回一个新的 React 元素。 所产生的元素将具有原始元素的 props ,新的 props 为浅层合并。 新的子元素将取代现有的子元素,keyref 将被保留。(想看更多就到PHP中文网React参考手册栏目中学习)

React.cloneElement() 几乎等效于:

<element.type {...element.props} {...props}>{children}</element.type>

然而,它也会保留 ref 。这意味着,如果你通过它上面的 ref 获取自己的子节点,你将不会有机会从你的祖先获取它。你只会获得绑定在你的新元素上的相同ref

这个 API 引入作为废弃的 React.addons.cloneWithProps() 替代品。

createFactory()

React.createFactory(type)

返回一个函数,该函数生成给定类型的 React 元素。 像React.createElement()一样,type(类型) 参数可以是一个标签名字字符串(例如'p''span'),或者是一个 React 组件 类型(类或者是函数)。参数可以是标签名称字符串(例如’p’或’span’)或者React组件类型(类或函数)。

这个函数被认为是遗留的API,并且我们鼓励你使用 JSX ,或直接使用 React.createElement()

如果您使用JSX,则通常不需要直接调用 React.createFactory()。请参阅不使用 JSX 的 React 了解更多信息。

isValidElement()

React.isValidElement(object)

验证对象是否是一个 React 元素。 返回 truefalse

React.Children

React.Children 提供了处理 this.props.children 这种不透明数据结构的实用程序。

React.Children.map

React.Children.map(children, function[(thisArg)])

对包含在 children 中的每个直接子元素调用一个函数,使用 this 设置 thisArg 。 如果children 是一个键片段(keyed fragment)或数组,它将被遍历:该函数永远不会传递容器对象(container objects)。 如果childrennullundefined ,返回 nullundefined,而不是一个数组。

React.Children.forEach

React.Children.forEach(children, function[(thisArg)])

类似于 React.Children.map() ,但是不返回一个新数组。

React.Children.count

React.Children.count(children)

返回 children 中的组件总数,等于传递给 mapforEach 的回调将被调用的次数。

React.Children.only

React.Children.only(children)

返回 children 中的唯一子集。否则抛出异常。

注意:

React.Children.only() 不接受 React.Children.map() 的返回值,因为它是一个数组而不是一个 React 元素。

React.Children.toArray

React.Children.toArray(children)

children 不透明数据结构作为一个平面数组返回,并且 key 分配给每个子集。 如果你想在渲染方法中操作children集合,特别是如果你想在传递它之前重新排序或切割this.props.children ,这将非常有用。

注意:

React.Children.toArray() 更改 keys 去防止嵌套数组的语法当扁平化子节点列表。 也就是说,toArray为返回数组中的每个key赋予前缀,以便将每个元素的 key 范围限定为包含它的输入数组。

React.Fragment

React.Fragment 组件允许你在 render() 方法中返回多个元素,而无需创建额外的 DOM 元素:

render() {
  return (
    <React.Fragment>
      Some text.
      <h2>A heading</h2>
    </React.Fragment>
  );}

你也可以用简写的 > 语法来使用它。 有关更多信息,请参见片段 Fragments 或者 React v16.2.0: Improved Support for Fragments。

本篇文章到这就结束了(想看更多就到PHP中文网React使用手册栏目中学习),有问题的可以在下方留言提问。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
es6新特性
es6新特性

es6新特性有:1、块级作用域变量;2、箭头函数;3、模板字符串;4、解构赋值;5、默认参数;6、 扩展运算符;7、 类和继承;8、Promise。本专题为大家提供es6新特性的相关的文章、下载、课程内容,供大家免费下载体验。

106

2023.07.17

es6新特性有哪些
es6新特性有哪些

es6的新特性有:1、块级作用域;2、箭头函数;3、解构赋值;4、默认参数;5、扩展运算符;6、模板字符串;7、类和模块;8、迭代器和生成器;9、Promise对象;10、模块化导入和导出等等。本专题为大家提供es6新特性的相关的文章、下载、课程内容,供大家免费下载体验。

197

2023.08.04

JavaScript ES6新特性
JavaScript ES6新特性

ES6是JavaScript的根本性升级,引入let/const实现块级作用域、箭头函数解决this绑定问题、解构赋值与模板字符串简化数据处理、对象简写与模块化提升代码可读性与组织性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

231

2025.12.24

c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

254

2023.09.22

java中null的用法
java中null的用法

在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

1089

2024.03.01

counta和count的区别
counta和count的区别

Count函数用于计算指定范围内数字的个数,而CountA函数用于计算指定范围内非空单元格的个数。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

203

2023.11.20

php中foreach用法
php中foreach用法

本专题整合了php中foreach用法的相关介绍,阅读专题下面的文章了解更多详细教程。

266

2025.12.04

require的用法
require的用法

require的用法有引入模块、导入类或方法、执行特定任务。想了解更多require的相关内容,可以阅读本专题下面的文章。

509

2023.11.27

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

3

2026.03.11

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
React 教程
React 教程

共58课时 | 6万人学习

国外Web开发全栈课程全集
国外Web开发全栈课程全集

共12课时 | 1万人学习

Go语言实战之 GraphQL
Go语言实战之 GraphQL

共10课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号