react 为什么要重构架构

前言

重构架构是react16及16后的版本对15以前的版本的架构进行了重构,

React 15 的架构可以分为两层:

  • Reconciler(协调器) 负责找出变化的组件,以及标识出如何更新。
  • Renderer(渲染器) 负责将变化的组件渲染到页面上。

React 15 使用的是栈调和器,它是递归、同步的方式。这样的设计可以使组件更新简单、快速,有一些缺点,例如:

  • 更新一旦开始,中途就无法中断,可能会造成浏览器渲染卡顿。
  • 无法实现异步、分片、优先级等高级功能。
  • 无法兼容新的浏览器特性,如 requestIdleCallback 和 requestAnimationFrame。

React 16 的架构可以分为三层:

  • Scheduler(调度器),负责调度任务的优先级,高优任务优先进入
  • Reconciler(协调器)。Reconciler 负责找出变化的组件,以及标识出如何更新。
  • Renderer(渲染器), 负责将变化的组件渲染到页面上。¹²

React 16 使用的是全新的 Fiber 调和器,它是循环、异步、可中断的方式。这样的设计可以使组件更新更加灵活、高效带来了一些优点:

  • 可以在浏览器每一帧的时间中,预留一些时间给 JS 线程,避免长时间占用主线程,造成卡顿。
  • 可以实现异步、分片、优先级等高级功能,如 Concurrent Mode(并发模式)、Suspense(悬停)、Lazy Loading(懒加载)等。
  • 可以兼容新的浏览器特性,如 requestIdleCallback 和 requestAnimationFrame。

总结

重构 React 的架构的主要原因是为了提高 UI 的渲染性能和用户体验,解决 CPU 和 I/O 的瓶颈,实现异步、可中断、可恢复、可优先级的更新流程,以及支持一些新的特性,如 Time Slice(时间分片)、Suspense(悬停)、Lazy Loading(懒加载)、Concurrent Mode(并发模式),所以react15递归、同步的更新执行是不支持的,重构就必须来了

相关推荐
你三大爷4 小时前
Netty / Kafka / Redis 保序问题的源码对比与 NIO 框架主流解法
后端·架构
神鹰手哥_起飞版4 小时前
从一张像素网格,理解康威生命游戏的核心机制
架构
张彦峰ZYF6 小时前
放行、排队与拒绝:限流设计的算法选型、数据结构与并发代价
后端·架构·滑动窗口·漏桶·令牌桶·高并发+限流
Trae_陈冀6 小时前
写详细设计总堆代码没逻辑?我做了个自动生成工具,3套模板+规范内置,输出直接过评审
架构·agent
Linye6 小时前
AI 越跑越偏?从 500 行臃肿规则到 80 行核心约束:多 Agent 项目中的「规则瘦身与防腐」四步排查法
人工智能·架构
Hespethorn7 小时前
112 个 Valgrind 错误,1 个根因:C++ 多线程服务的关机顺序复盘
后端·架构
HelloWorld0019 小时前
首屏加载慢如蜗牛?基于 Rust SWC + Module Federation + 资源预加载打造极致丝滑微前端架构实战
架构
用户094248568039 小时前
第22章:Redis 持久化 RDB 与 AOF:数据不丢的底线
redis·架构·源码
Decay__10 小时前
22_MySQL 运维自动化平台 —— 部署编排 + 监控 + 巡检 + 告警 + 工单闭环一体化
运维·数据库·sql·mysql·架构