1.react 处理createElement方法
也是jsx转换reactElement方法
-
createElement方法接收type, config, children
1.1 分离属性,定义propName属性名称,props存普通元素属性,不含key等
key,ref等特殊处理
判断有config属性,有ref存ref属性,有key属性存key并转字符串
三元接收self,source
for in 遍历config添加到props中
1.2 如果有children并且是数组或者对象
1.3 在判断是不是组件,组件上是不有defaultProps属性,有的话for in属性添加
在利用__DEV__判断是否是开发环境
1.4 最后return 返回ReactElement方法 -
ReactElement方法返回的就是react元素
内部定义element对象存放传入的参数return返回 -
isValidElement方法验证参数是不是ReactElement,返回布尔值
验证条件是obj是不是对象,不为null,$$typeof的值REACT_ELEMENT_TYPE,三个条件满足就是true