react-JSX

JSX理念

jsx在编译的时候会被babel编译为react.createELement方法
在使用jsx的文件中,需要引入react。import React from "react"
jsx会被编译为React.createElement,所有jsx的运行结果都是react element

React Component

在react中,常使用classComponent和FunctionComponent来构建组件

class AppClass extends React.Component {
	render() {
		return <p>classcomponent</p>	
	}
}
function AppFunc() {
	return <p>FunctionComponent</p>
}

ClassComponent 对应的element的type为appclass functioncomponent对应的element的type字段为appfunc本身。
所以无法通过引用类型区分ClassComponent和FunctionComponent。React通过ClassComponent实例原型上的isReactComponent变量判断是否是ClassComponent。

jsx和fiber节点

jsx是描述组件当前内容的数据结构,不包含schedule,reconcile,render所需要的信息。这些内容包含在fiber节点中,所以在组件mount的时候,reconciler根据jsx描述的组件内容生成组件对应的fiber节点。在update时,reconciler将jsx和fiber节点保存到数据对比,生成组件对应的fiber节点,并根据对比结果为fiber节点打标记。

上一篇:使用vite创建vue3项目、vue-cli创建vue3项目结构分析-1. 使用vite创建vue3项目


下一篇:《惊封》经典语录