React顶层API
0 条参与概述
Components
React组件让你将UI拆分成独立、可复用的片段,能独立地思考各个片段。可以通过继承React.Component
和React.PureComponent
两个类创建React组件。
- React.Component
- React.PureComponent
不使用ES6的class
,则需要使用下面方法创建React组件:
- createClass()
创建React元素
推荐使用JSX(React.createElement()语法糖),或者直接使用以下方法:
- createElement()
- createFactory()
修改元素
- cloneElement()
- isValidElement()
- React.Children
参考手册
React.Component
React.Component
是使用ES6语法定义组件类时的基类。
|
|
查看React.Component API 参考手册,了解更多基类的属性和方法。
React.PureComponent
React.PureComponent
类似React.Component
,但实现了shouldComponentUpdate()
,在该生命周期钩子中对props
和state
的浅比较,决定是否重新渲染组件。
如果你的React组件的render
方法,在props
和state
相同时返回同样的结果,那么你可以使用React.PureComponent
提升性能。
注释:React.PureComponent
的shouldComponentUpdate()
中仅做浅比较。如果state
或prop
中包含复杂的数据结构(如属性值为数组、对象等),将可能带来错误的比较结果。仅在确定数据结构简单时继承React.PureComponent
,或在已知深层数据变动时手动调用forceUpdate()
更新组件。也可以考虑使用immutable objects来快速比较嵌套数据。
React.PureComponent
的shouldComponentUpdate()
将跳过整个子组件树的prop
更新。请确保所有子组件是纯净的。
createClass()
|
|
如果你没有使用ES6,你可能需要使用React.createClass()
来创建React组件class。
|
|
createElement()
|
|
创建并返回一个新的指定类型type
的React元素。type
参数可以是标签名字符串(如’div’
或’span’
),或者React组件的类型(class或function)。
使用JSX编写的代码,最终会转化成调用React.createElement()
的代码,你不用显示地调用React.createElement()
。
cloneElement()
|
|
克隆React并返回一个新的React元素,该元素的props为[props]
参数与element
的props浅合并的结果。新的[...children]
将替换原children
。原element上的key
和ref
属性将保留。
React.cloneElement()
写法等同于:
|
|
它也会保留ref
s。这意味着,如果得到一个有ref
的子元素,你不会不小心从你的祖先偷走它。在新元素上会附有同样的ref
。
这个API用于替代废弃的React.addons.cloneWithProps()
。
createFactory()
|
|
返回创建指定类型type
的React元素的函数。类似React.createElement()
,type
可以是标签名字符串(如’div’
或’span’
),或者React组件的类型(class或function)。
这个方法比较老旧,建议使用JSX或者React.createElement()
代替。
isValidElement()
|
|
检验object
是否是React元素。返回true
或false
。