createElement
createElement(type,config, children)
参数
type
:元素类型
config
:配置属性
children
:子元素
行为
- 分类props 属性和特殊属性
- 将子元素挂载到props.children中
- 为props属性赋默认值(defaultProps)
- 创建并返回ReactElement
/*
propName=>属性名称
用于后面的for循环
*/
let propName;
/*
存储React Element 中的普通元素属性
即不包含key、ref、self、source
*/
const props = {};
let key = null;
let ref = null;
分类props 属性和特殊属性
将子元素挂载到props.children中
为props属性赋默认值(defaultProps)
创建并返回ReactElement
element属性
element = {
/*
组件的类型,十六进制数值hove Symbol值
React 在最终渲染DOM的时候,需要确保元素的类型是 REACT_ELEMENT_TYPE
需要此属性作为条件判断的依据
*/
$$typeof: REACT_ELEMENT_TYPE,
/*
元素具体的类型值 如果是元素节点 type 属性中存储的就是 div、span等等
如果元素是组件 type 属性中存储的就是组件的构造函数
*/
type,
/*
元素的唯一标识
用作内部 vdom 对比 提升 操作性能
*/
key,
/*
存储元素Dom对象或者数组组件 实例对象
*/
ref,
/*
存储向组件内部传递的数据
*/
props,
/*
记录当前元素所属组件(记录当前元素是哪个组件创建的)
*/
_owner: owner,
};