React顶层API
1.React.Children相关
1. React.Children.map(props.children, mapFunc)
1)该方法用于在props.children不透明的情况下,安全的遍历组件children。
2)该方法可以平铺嵌套数组的返回值。
import React from 'react';
import ReactDOM from 'react-dom'; function User(props) {
// props.children取值有三种:
// 1.无子节点-undefined
// 2.一个文本/元素-字符串或者对象
// 3.多个节点-数组
// 所以使用map可能会有问题,但是React.Children.map解决了这个问题
return (
<>
{
React.Children.map(props.children, (item,index) => <div key={index}>{item}</div>)
}
</>
)
} ReactDOM.render(
<User>
1
</User>, window.root)
2. React.Children.forEach(props.children, forEachFn)
遍历,但是不会返回一个数组
3 .React.Children.count(props.children)
返回子组件的个数
4. React.Children.only(children)
判断是否只有一个元素;如果是返回该元素;否则抛出异常。
5. React.Children.toArray(children)
以数组形式扁平展开,并返回。
2.React.Fragment
用于class组件返回多个并列的元素。不想额外添加div等。
render() {
return (
<React.Fragment>
<div>1</div>
<div>2</div>
</React.Fragment>
)
}
还可以用简写形式<></>;或者[,,,,]
3. React.Profiler(V16.9.0)
用于测试React组件渲染的时间和“代价”。
有两个属性:
1. id 指定组件的名称
2. onRender()方法,挂载完的回调函数。
function onRenderCallback(
id, // 发生提交的 Profiler 树的 “id”
phase, // "mount" (如果组件树刚加载) 或者 "update" (如果它重渲染了)之一
actualDuration, // 本次更新 committed 花费的渲染时间
baseDuration, // 估计不使用 memoization 的情况下渲染整颗子树需要的时间
startTime, // 本次更新中 React 开始渲染的时间
commitTime, // 本次更新中 React committed 的时间
interactions // 属于本次更新的 interactions 的集合
) {
// 合计或记录渲染时间。。。
}
使用示例:
<Profiler id="Navigation" onRender={onRenderCallback}>
<Navigation {...props} />
</Profiler>
4. React.StrictMode(V16.3.0)
用于在开发环境下,进行如下检查:
1. 识别过时的Ref 字符串API的使用
2.识别过时的ContextAPI 的使用
3.警告非安全生命周期的使用
4.警告废弃的findReactDOMNode()的使用
5.检查一些副作用
代码示例:
<React.StrictMode>
<ComponentOne />
<ComponentTwo />
</React.StrictMode>
5. React.memo(V16.6)
高阶组件,将函数组件作为参数传入,返回一个集成PureComponent的类组件。
function memo(WrappedComponent) {
return class extends React.PureComponent {
render() {
return (
<WrappedComponent {...this.props} />
)
}
}
}
6. React.cloneElement
语法:
React.cloneElement(
element,
props,
[...children]
)
相当于复制element元素后,再给其添加props和children。
<element.type {...element.props} {...props}>
{children}
</element.type>
7. React.isValidElement(obj)
判断一个对象是否是React元素。
React.isValidElement(<App/>) //true
8. React.createRef和React.forwardRef(V16.3.0)
React.createRef()用于生成ref对象,作为ref属性的值传递。
React.forwardRef((props,ref) => ())用于ref转发。
9. React.Suspense和React.lazy()(V16.6.0)
注意:React.lazy()需要支持Promise。
React.Suspense用于React.lazy()加载的组件外围,用于指定加载指示器。
防止某些组件尚未具备渲染条件。
React顶层API的更多相关文章
- React 顶层 API
概览 组件 使用 React 组件可以将 UI 拆分为独立且复用的代码片段,每部分都可独立维护.你可以通过子类 React.Component 或 React.PureComponent 来定义 Re ...
- ReactJS入门(三)—— 顶层API
本文基本跟着官方文档把API都走一遍,但会有实例来解释应该怎么用,木有比我更详细的API文档咯. React.createClass 参数:CONFIG(object) 创建一个ReactClass( ...
- React Router API文档
React Router API文档 一.<BrowserRouter> 使用HTML5历史记录API(pushState,replaceState和popstate事件)的<Rou ...
- React 组件 API
React 组件 API 在本章节中我们将讨论 React 组件 API.我们将讲解以下7个方法: 设置状态:setState 替换状态:replaceState 设置属性:setProps 替换属性 ...
- React LifeCycle API
React LifeCycle API old API & new API 不可以混用 demo https://codesandbox.io/s/react-parent-child-lif ...
- React入门--------顶层API
React.createClass 参数:config(object) 创建一个ReactClass(组件类),参数是一个对象且必须带有render属性方法,该方法必须返回一个封闭的容器(容器内可以由 ...
- [译]迁移到新的 React Context Api
随着 React 16.3.0 的发布,context api 也有了很大的更新.我已经从旧版的 api 更新到了新版.这里就分享一下我(作者)的心得体会. 回顾 下面是一个展示如何使用旧版 api ...
- React Native API之 ActionSheetIOS
ok!先来演示是下效果: 官网教程:http://reactnative.cn/docs/0.31/actionsheetios.html#content 上代码:引入API组件: import Re ...
- [React] Use the new React Context API
The React documentation has been warning us for a long time now that context shouldn't be used and t ...
随机推荐
- Python之装饰器笔记
概述: 用于管理和增强函数和类行为的代码 提供一种在函数或类定义中插入自动运行代码的机制 特点 更明确的语法.更高的代码可维护性.更好的一致性 编写 函数基础: 将函数赋给变量.将函数作为参数传递. ...
- axios 发送post请求
目录 方案一 方案二 方案一 在node中使用axios以post的方式发送一张图片给某个server时: let data = fs.createReadStream(__dirname + '/t ...
- sysbench安装和测试
1.首先安装依赖 yum install mariadb-devel yum install automake libtool –y 2.下载安装包 wget https://github.com/a ...
- 最全APP安装/卸载/更新测试点
1.安装查看在安装过程中存在的提示信息是否明确,意思是否明确在安装过程中,点击取消按钮,能否正常退出安装程序,软件是否可用.安装时是否识别有SD卡,并默认安装到sd卡中安装过程中,接听电话或者短信,安 ...
- Intergalaxy Trips CodeForces - 605E (期望,dijkstra)
大意: 给定矩阵$p$, $p_{i,j}$表示每一秒点$i$到点$j$有一条边的概率, 每秒钟可以走一条边, 或者停留在原地, 求最优决策下从$1$到$n$的期望用时. $f_x$为从$x$到$n$ ...
- Board Game CodeForces - 605D (BFS)
大意: 给定$n$张卡$(a_i,b_i,c_i,d_i)$, 初始坐标$(0,0)$. 假设当前在$(x,y)$, 若$x\ge a_i,y\ge b_i$, 则可以使用第$i$张卡, 使用后达到坐 ...
- (六)easyUI之对话框窗口
一.拥有HTML的对话框 <%@ page language="java" contentType="text/html; charset=UTF-8" ...
- 在docker下SQL Server attach mdf和ldf文件
(DB:MyPost) USE masterGO-- Create database via attachCREATE DATABASE [MyPost] ON ( FILENAME = N'C ...
- Go 标准库,常用的包及功能
Go 的标准库 Go语言的标准库覆盖网络.系统.加密.编码.图形等各个方面,可以直接使用标准库的 http 包进行 HTTP 协议的收发处理:网络库基于高性能的操作系统通信模型(Linux 的 epo ...
- 三:后台的登录注册接口(moon项目,前面有一,二)
** 项目一共有 16 个页面,是一个电商网销项目,自己在网上的某网上找的一个要做的网站的设计图: 页面主要包括: 登录页 -- 注册页 -- 首页 -- 产品列表页 -- 产品详情页 -- 会员中 ...