[react] render方法的原理你有了解吗?它返回的数据类型是什么?
element, string , boolean , undefind, null
ReactChild | ReactFragment | ReactPortal | boolean | null | undefined;
render的第一个参数通过babel转为React.createElement,后者根据参数类型的不同调用不同的内部方法来转换为原生dom并生成真实dom插入到容器中.
对原生html标签调用ReactDOMComponent的mountComponent方法,将element转化为真实的dom节点, 并插入到对应的container中,返回realDom;
对于自定义组件,递归调用ReactCompositeComponentWrapper转化为原生dom标签,然后和上面一样通过ReactDOMComponent的mountComponent方法,生成realDom;
string和number,调用的是ReactDOMTextComponent;
null和boolean,调用的是ReactEmptyComponment;
Most helpful comment
render的第一个参数通过babel转为React.createElement,后者根据参数类型的不同调用不同的内部方法来转换为原生dom并生成真实dom插入到容器中.
对原生html标签调用ReactDOMComponent的mountComponent方法,将element转化为真实的dom节点, 并插入到对应的container中,返回realDom;
对于自定义组件,递归调用ReactCompositeComponentWrapper转化为原生dom标签,然后和上面一样通过ReactDOMComponent的mountComponent方法,生成realDom;
string和number,调用的是ReactDOMTextComponent;
null和boolean,调用的是ReactEmptyComponment;