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节点打标记。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值