react中的fiber

文章类型:React

发布者:admin

发布时间:2023-05-16

React Fiber 是 React 库内部实现的一种用于协调和管理组件更新的算法和架构。为了解决 React 中的渲染和协调性能问题

一:原因

1:React 渲染过程中,当发生状态更新时,React 会通过递归遍历整个组件树来计算出需要更新的部分,并直接进行更新操作,可能会导致一次渲染的时间较长,造成页面卡顿和交互不流畅

二:特点

1:异步渲染:将一次渲染过程拆分为多个小任务,利用浏览器的空闲时间逐步完成。这样可以避免长时间的渲染阻塞,提升页面的响应性和流畅性。

2:优先级控制:通过定义任务的优先级,使得可以在不同的任务之间进行调度和切换。它使用了一种叫做优先级调度的算法,可以根据任务的重要性和紧急程度来动态调整任务的执行顺序,确保高优先级任务能够优先执行。

3:增量渲染:实现了增量渲染的机制,可以将渲染工作分成多个步骤,并且可以随时中断和恢复。这样在每个步骤之间可以进行任务切换和优先级调度,从而更好地响应用户交互,提高渲染的效率。

4:错误边界:可以捕获和处理组件树中发生的错误,防止整个应用崩溃。错误边界能够将错误限制在组件边界内,并提供一种可控的方式来处理错误情况,保证应用的稳定性和可靠性。

三:渲染流程

1:构建Fiber树:将组件树转换为Fiber树。每个组件在Fiber树中都有对应的Fiber节点,用于表示组件的状态和相关信息。

2:Diff算法:使用一种称为"Reconciliation"的算法来比较前后两次渲染的Fiber树,找出需要更新的部分。尽量复用已存在的Fiber节点,以减少创建和销毁节点的开销。

3:任务调度:根据任务的优先级和调度策略,会将需要更新的Fiber节点划分为不同的任务。每个任务都有一个优先级,高优先级的任务会先执行。用时间分片(Time Slicing)技术,将渲染工作分解为多个小任务,并利用浏览器的空闲时间逐步完成。

4:更新阶段:在每个任务中执行组件的更新阶段。在这个阶段,React会调用组件的生命周期方法、处理组件的状态和属性改变,以及构建组件的子树。

5:提交阶段:当所有任务完成后,会将更新结果应用到DOM上,即将变化的部分反映在页面上。这个过程称为提交阶段。

四:总结

1:是一种用于协调和管理组件更新的算法和架构,通过异步渲染、优先级控制、增量渲染和错误边界等特性,提升了 React 应用的渲染性能和用户体验

2:更好地适应复杂的应用场景,为后续的特性和优化提供了更供了基础