【React】React渲染流程

1. JSX 转换

JSX 被 Babel 转换为 React.createElement 调用。生成一个 虚拟DOM 对象,描述组件的结构和内容。

2. 创建虚拟 DOM

React.createElement 调用返回一个 JavaScript 对象,表示 虚拟DOM 节点。这些节点被组织成一个树形结构。

3. 创建 Fiber 节点

每个 虚拟DOM 节点会被转换成一个 Fiber 对象。Fiber 对象是对虚拟 DOM 节点的一个增强版本,除了包含虚拟 DOM 节点的属性外,还包含额外的用于调度和调试的信息。

4. 渲染 Fiber 树

在「初次渲染」时,React 会将 Fiber 树转换为真实的 DOM 元素。Fiber 构建了一个“工作单元”的队列,负责处理渲染和更新操作。

5. 更新 Fiber 树

当组件的状态或属性发生变化时,React 会生成一个新的 Fiber 树。新的 Fiber 树与旧的 Fiber 树进行比较,找出差异。

6. 调度和协作渲染

React Fiber 支持调度和分片渲染。渲染过程可以被中断和恢复,以避免长时间阻塞主线程。Fiber 调度器可以将工作分割成多个任务,按优先级进行处理。
渲染过程可以在后台进行,允许 React 处理高优先级任务(如用户交互)并在空闲时继续处理低优先级任务(如更新大型列表)。

7. 生成真实dom

Fiber 使用 diffing 算法比较旧的 Fiber 树和新的 Fiber 树,生成一个更新补丁。这个补丁描述了需要对实际 DOM 进行的最小化更改操作。

React 将补丁应用到真实 DOM 上,包括插入、更新和删除 DOM 节点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

田本初

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值