通过function创建函数组件,返回jsx语法对象,根据es6module规范,导出和引入。
通过<Compo/>或<Compo>......</Compo>调用,首字母大写。
可以传递属性,<Compo title="123">......</Compo>
函数组件通过props接收,标签包裹的内容通过在props里添加children属性接收。
渲染机制
1.基于babel-preset-react-app把调用的组件转换为createElement格式
React.createELement(Compo,{
title:"123"
})
2.createElement方法执行,创建出一个virtualDOM,
{
$$typeof:Symbol(react.element),
key:null,
props:{title:"123"},
ref:null,
type:Compo
}
3.基于root.render把virtualDOM变为真实DOM
type值不再是一个字符串,而是一个函数。
函数Compo执行,props实参传递给此函数。
接收函数返回的结果,及jsx。
render通过jsx返回的虚拟对象进行渲染。