👨🏫 本系列由前端面试真题博主 Kincy 发起,每日更新一题,通勤路上轻松掌握高频知识点。
📢 如果你想第一时间获取更新,或与群友交流面试经验、内推信息,欢迎加入微信群(文末扫码)!
🧠 系列前言:
面试题千千万,我来帮你挑重点。每天一道,通勤路上、蹲坑时、摸鱼中,技术成长不设限!本系列主打幽默 + 深度 + 面霸必备语录,你只管看,面试场上稳拿 offer!
💬 面试官发问:
“你了解 React Fiber 吗?能说说它的核心原理和解决了什么问题吗?”
哎呀,这题我熟。React Fiber,听起来像个健身品牌,其实是 React 自己下的一盘“大棋”。
🎯 快答区(初级背诵版)
React Fiber 是 React 16 开始引入的新架构,用来优化之前递归更新的流程,解决了无法中断渲染、更新过程不够灵活的问题。Fiber 支持任务拆分、优先级调度和异步渲染,使得用户交互更流畅,页面不卡顿。
面试官:嗯,还行,但我想听点你背不出来的内容 😏
🧠 深入理解:Fiber 究竟是谁?
📌 1. React 旧架构的问题
React 15 及以前的版本在更新组件时,采用的是同步递归的方式:
<MyHugeComponent />
页面越大,递归越深,React 就越像一位卷王:咬牙更新完才休息。
问题是:
- 你点个按钮,页面卡了 300ms;
- 你输入表单,光标卡了一下;
- 用户体验直接下滑成海底捞。
React 团队一拍桌子:我们要让更新能暂停、能恢复、能控制优先级!
于是 Fiber 诞生。
🧱 2. 什么是 Fiber 架构?
通俗点说,Fiber 是 React 的 任务调度中心 + 渲染流水线,是对 Virtual DOM 的一次架构升级。
它的目标是实现可中断、可恢复、可控制优先级的更新流程。
它怎么实现的?
- 把组件更新任务拆成小块(Unit of Work)
- 每一块都可以:
- 执行一点点
- 暂停
- 恢复
- 放到空闲时执行
React:我不再一口气更新到底了,我要 边干活边喘气!
🧩 3. Fiber 是什么数据结构?
别怕,这不难!
Fiber 本质上是个双缓冲链表树结构(听起来吓人,画出来就很简单):
每个组件都会生成一个 FiberNode,类似这样:
type FiberNode = {
type: string | Function;
child: FiberNode | null;
sibling: FiberNode | null;
return: FiberNode | null;
stateNode: any;
alternate: FiberNode | null; // 旧节点,用于比较
effectTag: string;
// ...还有一些调度相关字段
}
每个节点都是可控的、可遍历的、可“后悔”的!
⏱️ 4. Fiber 的两大阶段
React Fiber 的更新流程分成两个阶段:
| 阶段名 | 作用 | 是否可中断 |
|---|---|---|
| Reconciliation | 构建 Fiber 树(diff) | ✅ 可以 |
| Commit | 真实操作 DOM | ❌ 不行 |
🚦在第一阶段,React 可以使用浏览器的空闲时间 requestIdleCallback 做点“碎片工作”。
🧠 如果任务来不及做完,React 可以暂停,先处理用户交互(比如你点个按钮),然后回来接着干。
🎢 5. 支持优先级调度是怎么回事?
React Fiber 的另一个大招是:给不同的更新任务分等级!
| 任务类型 | 优先级 |
|---|---|
| 用户输入(点击、键盘) | 高 |
| 动画 | 高 |
| 网络请求后的渲染 | 中 |
| 页面初始化加载 | 低 |
React 使用了自己的调度器(scheduler),确保重要的任务插队处理,低优先级的任务以后再说。
💬 面试中可以抛出的装 X 语录
- “Fiber 是 React 从同步递归向异步可控调度的一次范式转变。”
- “Fiber 把 Virtual DOM 升级成任务流,赋予了调度权。”
- “它让我重新相信:写前端也能讲并发。”
(说完记得停顿两秒,喝一口水,看面试官点头)
✅ 总结一句话
React Fiber = 可中断、可恢复、可优先级调度的 Virtual DOM 架构升级版,它让 React 更聪明、更流畅,也为后续的 Concurrent Mode 奠定了基础。
🔚 系列结尾:明日继续爆料!
明天继续来一道面试题,咱们聊聊 React 是怎么做 Virtual DOM diff 的(别看是老生常谈,其实里面猫腻不少🐱)。
📌 点赞 + 收藏 + 关注系列,让你成为面霸不是梦!
📚 本系列每天一题,持续更新中!
👉 扫码加入【前端面试题交流群】,一起成长、交流、内推、分享机会!
备注“掘金”优先通过