React render方法的原理,在什么时候会触发?

React的render方法在类组件和函数组件中有不同表现。在更新过程中,新旧虚拟DOM树对比决定了如何更新真实DOM。render主要在setState或useState后触发。类组件只要执行setState就会触发render,而函数组件状态改变不一定会触发render,除非useState的值改变。当props从父组件传递时,父组件render会影响子组件的渲染。

首先的话render函数在react中是有两种形式存在的,在类组件中,指的是render方法

而在函数组件中指的是函数组件本身.

在react中虚拟dom数的结点,它接收三个参数:

  • type:标签

  • attributes:标签属性,若无则为null

  • children:标签的子节点

这些虚拟DOM树最终会渲染成真实DOM

render过程中,React 将新调用的 render函数返回的树与旧版本的树进行比较,这一步是决定如何更新 DOM 的必要步骤,然后进行 diff 比较,更新 DOM

触发的时机

render的执行时机主要分为两个部分:

类组件调用用setState修改状态

函数组件通过useState的hook修改状态,函数通过useState这种形式更新数据,当数组的值不在发生变化就不会触发render

类组件的重新渲染

函数组件的重新渲染

最后:

render函数里面可以编写JSX,转化成createElement这种形式,用于生成虚拟DOM,最终转化成真实DOM

React 中,类组件只要执行了 setState 方法,就一定会触发 render 函数执行,函数组件使用useState更改状态不一定导致重新render

组件的props 改变了,不一定触发 render 函数的执行,但是如果 props 的值来自于父组件或者祖先组件的 state

在这种情况下,父组件或者祖先组件的 state 发生了改变,就会导致子组件的重新渲染

所以,一旦执行了setState就会执行render方法,useState 会判断当前值有无发生改变确定是否执行render方法,一旦父组件发生渲染,子组件也会渲染

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值