基础-ReactAPI
ReactAPI
平时我们都说我们使用三大框架之一的React
进行开发, 但其实大部分人都不一定知道React
是个什么东西. 这一系列文章将从React
底层来剖析它的基础, 思想以及运行机制.
React
的核心包括react
库和react-dom
库,react
仅仅1000多行代码,而react-dom
却将近2w行. 其实 react
库中仅仅是定义了我们的一些基础, 导出一些我们常用的API, 而react-dom
库则包含了大部分框架逻辑.
这一系列文章是在React16+
的基础上写的, React16相较于之前的版本是核心上的一次重写,虽然主要的API都没有变化,但是增加了很多能力。并且首次引入了Fiber
的概念,之后新的功能都是围绕Fiber
进行实现,比如AsyncMode
,Profiler
等
下面是React
暴露出来的一些API:
1 | const Children = { |
Children
这个对象提供了一堆帮你处理props.children
的方法,因为children
是一个类似数组但是不是数组的数据结构,如果你要对其进行处理可以用React.Children
外挂的方法。当你真正了解React.Children
中方法的基础原理后, 你会先这是一个很方便很强大的API.
createRef
React
即将抛弃<div ref="this.ref" />
这种 string ref
的写法, 将来只能用下面方式来使用ref
:
1 | // 1. createRef |
Component & PureComponent
Component
是我们使用React
框架的基础, 我们的类都是继承自Componet
,而真正看过源码之后才知道,Component
其实一个自定义的构造函数, 而PureComponent
也是继承自Component
, 唯一的区别是PureComponent
的原型上多了一个标识:
1 | // 对props和state的浅比较 |
createContext
createContext
是官方定稿的context
方案,在这之前我们一直在用的老的context API
都是React不推荐的API,现在新的API释出,官方也已经确定在17大版本会把老API
去除。
forwardRef
forwardRef
是用来解决HOC组件传递ref
的问题的,所谓HOC就是Higher Order Component
,forwardRef
的使用方法如下:
1 | const newComponent = React.forwardRef((props, ref) => ( |
Hooks
几个use
开头的API是React
新提供的针对function component
的Hook方法,
类型
下面四个是React
提供的组件, 在React
包中,他们只是一个占位符, 真正的处理逻辑在React-dom
中,在React实际检测到他们的时候会做一些特殊的处理.
1 | REACT_FRAGMENT_TYPE as Fragment, |
Element操作
createElement
: 创建一个Element
对象cloneElement
: 克隆一个Element
对象createFactory
: 创建专门用来创建某一类ReactElement
的工厂的isValidElement
: 验证是否是一个ReactElement
jsx & jsxs & jsxDEV
与React.createElement
类似, 用来创建一个Element
对象.