react官方对其的定义是,jsx是js的一种语法拓展,但是其充分具备js的能力
浏览器本身并不支持jsx,所以jsx会被编译为REACT.createElement(),其将会返回一个叫做React Element 的js对象(通过babel转化,其就是react.creatElement这个方法的语法糖)
createElement接受三个参数:
1,type,元素类型
2,config,元素的属性
3,children,该元素标签内嵌套的内容,子元素
createElement这个方法内部其实就是一个处理数据的转换器,将接受的参数进行置顶的格式格式化,最后发起ReactElement的调用,ReactElement其实就是根据所接受的参数创建一个叫做element的js对象,该js对象就是对真实dom的描述,就是老生常谈的虚拟dom
而这个虚拟dom就是通过reactDOM.render方法来转化为真实dom
reactDOM.render接受三个参数
1,element,需要渲染的元素,虚拟dom
2,container,一个真实dom,根结点(元素挂在的目标容器,默认情况下就是id为root的div根结点)
3,[callback],回调函数,可选参数,用来处理渲染结束后的逻辑
jsx代码通过babel编译为React.createElement这个方法的调用,在这个方法里面,接受三个参数,type元素类型,config雨伞的属性,children元素的子元素or内容,会该三个参数进行指定数据的格式化,传递给ReacrElement这个方法,调用该方法,创建一个element的js对象,将接受的参数赋予该对象的属性,这个对象其实就是虚拟dom,最后虚拟dom就是通过reactDOM.render这个方法转化为真实的dom