深入相识React 工作原理是什么

[复制链接]
发表于 2024-10-19 00:25:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
前端面试题包括ECMScript,TypeScript,Nodejs,React,Webgl,Webpack,Threejs等还在整理中,在线地点前端面试题,源码地点各人多多支持才有动力给各人分享更多好的面试题。


  • React 的工作原理基于以下几个关键概念:假造 DOM(Virtual DOM)、组件化、单向数据流 和 调和(Reconciliation)。这些概念共同作用,使得 React 可以高效地更新用户界面
React 工作原理核心概念


  • 假造 DOM (Virtual DOM)


  • React 创建并维护一个轻量级的假造 DOM(Virtual DOM)来表现 UI 的结构。
  • 当组件的状态或属性发生变化时,React 不会立刻操纵真实的 DOM,而是先创建新的假造 DOM 树。
  • React 会通过**调和算法(Reconciliation)**比较新旧假造 DOM 树的差异,找出需要更新的部分,然后以最小化的 DOM 操纵更新真实 DOM。

  • 组件化


  • React 应用由多个组件组成,每个组件负责 UI 中特定部分的显示和行为。
  • 组件是独立且可复用的,可以是函数组件或类组件。
  • 组件通过 props(属性)进行数据传递,使用 state 来管理内部的动态数据。

  • 单向数据流


  • 在 React 中,数据是单向活动的,从父组件通过 props 向下传递到子组件。
  • 子组件不能直接修改父组件的数据,而是通过触发变乱(如回调函数)来关照父组件进行状态更新。
  • 单向数据流的操持让 React 应用的状态管理更加可控、易于调试。

  • 调和 (Reconciliation)


  • React 使用调和算法来高效地比较当前假造 DOM 和新的假造 DOM 树,找出需要更新的部分,并最小化对真实 DOM 的操纵。
  • 该算法通过“diffing”机制将两个假造 DOM 树逐层进行比较,找出差异,并仅更新有变化的节点。这极大地提拔了性能,因为操纵真实 DOM 是昂贵的。
React 的工作流程



  • 组件渲染:当组件的 state 或 props 改变时,React 会重新调用组件的 render 方法,生成一个新的假造 DOM 树。
  • Diffing 比较:React 会将新的假造 DOM 树与旧的假造 DOM 树进行比较,找出发生变化的部分。
  • 最小化更新真实 DOM:根据 diffing 效果,React 通过批量更新的方式(在一次变乱循环中)对真实 DOM 进行操纵,而不是每次数据变化都立刻修改 DOM,淘汰不须要的重绘。
  • 调和:React 在更新真实 DOM 时,会根据组件的范例、结构和状态智能地优化更新过程。例如,React 会通过“键值”来确定列表项的变化,淘汰不须要的重新渲染。
React Fiber 架构



  • React 引入了 Fiber 架构 来优化更新流程,特别是当 UI 复杂且存在大量任务时。Fiber 允许 React 将更新任务分为多个小任务,并在空闲时分批完成(时间分片),从而提拔应用的相应速率。
  • 并发模式(Concurrent Mode):Fiber 可以停止长时间的渲染任务,优先处置惩罚用户交互等高优先级任务,使得 React 应用更加流畅和相应敏捷。
  • 时间分片(Time Slicing):React 通过期间分片将大任务分解为小任务,可以在空闲时间执行更新,不会壅闭主线程。
总结



  • React 通过假造 DOM、组件化和单向数据流的方式管理 UI 渲染,确保应用在复杂状态变更下依然能够高效运行。调和算法和 Fiber 架构的引入,使得 React 能够更灵活地调度更新任务,提拔用户体验。
相干链接

源码地点
前端面试题

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
继续阅读请点击广告
回复

使用道具 举报

© 2001-2025 Discuz! Team. Powered by Discuz! X3.5

GMT+8, 2025-7-10 02:48 , Processed in 0.073646 second(s), 29 queries 手机版|qidao123.com技术社区-IT企服评测▪应用市场 ( 浙ICP备20004199 )|网站地图

快速回复 返回顶部 返回列表