在类组件中,指的是render方法:
在函数组件中,指的是函数组件本身:
在render中,我们会编写jsx,jsx通过Babel编译后就转化成我们熟悉的JS格式:
Babel编译后:
从名字上来看,createElement方法是用来创建元素的:
在react中,这个元素就是虚拟DOM节点,接受三个参数:
这些虚拟DOM树最终会渲染成真实DOM
在render过程中,React将新调用render函数返回的树与旧版本的树进行比较,这一步是决定如何更新DOM的必要步骤,然后进行diff比较,更新DOM树
render执行实际主要分为了两部分:
类组件调用setState修改状态
函数组件通过useState hook修改状态
render函数里面可以编写jsx,转化为createElement这种形式,用于生成虚拟DOM,最终转化为真实DOM
在React中,类组件主要执行了setState方法,就一定会触发render函数执行,函数组件使用useState更改状态不一定导致重新render
组件的props改变了,不一定触发render函数的执行,但是如果props的值来自于父组件或者组件组件的state的话,父组件的state发生了变化,就会导致子组件的重新渲染
所以,一旦执行了setState就会执行render方法,useState会判断当前值有无发生改变确认是否执行render方法,一旦父组件发生渲染,子组件也会渲染