[react] createElement与cloneElement两者有什么区别?
createElement
是创建一个React元素,jsx
即是这个函数的语法糖;它的函数签命是React.createElement(type, [props], [...children])
cloneElement
是拷贝一个React元素,可选择在修改它的props后,再返回一个新的React元素;它的函数签命是React.cloneElement(element, [props], [...children]): ReactElement
,这个函数常结合React.Children.map
一起使用,修改props.children
的props,来进行一些额外的操作,如下
/** 以下代码实现点击子组件是,先执行父组件的onClick方法,再执行子组件的onClick方法
*/
import React from 'react';
function Tab(props) {
const _onClick = (onclick) => {
props.onClick();
onclick();
};
return <ul onClick={props.onClick}>
{
React.Children.map(props.children, child => {
const childProps = child.props;
cons