React顶层API
2024-10-06 14:52:01
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()加载的组件外围,用于指定加载指示器。
防止某些组件尚未具备渲染条件。
最新文章
- WCF Basics - FAQs Series【WCF基础----问答系列教程】
- 配置gradle.properties
- Autofac - 组件
- PHP内核探索之变量(1)Zval
- Git pull 强制覆盖本地文件
- 每天一个linux命令(33):ps命令
- Python开发【第一篇】Python基础之生成器和迭代器
- 剑指offer 27二叉搜索树与双向链表
- Media Queries for Standard Devices
- php中 0 与 字符串比较的问题
- IIS Express总结
- MFC原理第一讲.MFC的本质.以及手工编写MFC的程序
- 【运维】略谈Raid级别
- ES6_入门(6)_函数的扩展
- 学习笔记:The Log(我所读过的最好的一篇分布式技术文章)
- node.js+ react + redux 环境搭建
- P1382 楼房 set用法小结
- Flutter常用组件(Widget)解析-Scaffold
- c#dataGridView 知识
- 《Windows内核编程》---系统线程和同步事件
热门文章
- laravel6.0路由
- logstash grok nginx log
- Fabric中的节点类型
- Form key length limit 2048 exceeded ,提交数据时,数据的键过长 或者是上传文件过大
- 让网站支持老版本IE6、7、8、9浏览器的3种解决方案
- 关于Vue中,checkBox等组件在赋值后,点击切换页面未及时更新问题
- MUI底部导航栏切换效果
- VS code C++代码没有自动提示
- BufferInputStream、BufferOutputStream、BufferedReader、BufferedWriter、Java代码使用BufferedReader和BufferedWriter实现文本文件的拷贝
- zabbix-通过自动发现添加主机