一文看懂React Hooks流程,别再被面试官问倒了
一文看懂 React Hooks 流程,别再被面试官问倒了
React Hooks 的底层机制其实不复杂,核心就一句话:React 靠“调用顺序 + 链表”来记住每个 Hook 的状态。
一次渲染里,Hooks 的真实顺序
组件每次渲染都会经历这些阶段:
执行组件函数,按顺序调用 useState、useMemo、useCallback、useRef 等。
React 根据 Hook 调用顺序,从当前组件的 Hook 链表里取出对应状态。
生成新的虚拟 DOM,完成 DOM 更新。
浏览器绘制前,同步执行 useLayoutEffect。
浏览器绘制后,异步执行 useEffect。
所以 useEffect 永远晚于组件函数执行,也晚于 useLayoutEffect。
为什么 Hooks 不能写在 if / 循环里
React 内部把每个组件的 Hooks 存在一个链表里,挂载在 Fiber 节点的 memoizedState 上。
首次渲染时,第 1 个 useState 对应链表第 1 个节点,第 2 个 useEffect 对应第 2 个节点。后续每次渲染,React 都会按同样顺序遍历这个链表。
一旦你把 Hook 放进 if、for 或嵌套函数里,调用顺序可能变化,React 就会把状态读错位。这就是“顺序一致”规则的来源。
不同 Hook 在流程里的位置
useState / useReducer:渲染阶段执行,负责读取/计算当前状态。
useMemo / useCallback:渲染阶段执行,依赖不变时复用旧值。
useRef:渲染阶段执行,返回一个跨渲染周期稳定的对象。
useLayoutEffect:DOM 更新后、浏览器绘制前同步执行,适合读取布局。
useEffect:浏览器绘制后异步执行,不阻塞 UI。
useEffect 的依赖数组怎么判断
React 会用 Object.is 逐个比较本次依赖和上次依赖。
不传依赖数组:每次渲染后都执行。
传 []:只在挂载后执行,清理函数在卸载时执行。
传 [a, b]:挂载后执行,之后只有 a 或 b 变化时才执行。
多个 useEffect 按声明顺序执行;清理函数按逆序执行。
面试官常追问的几个点
useEffect 和 useLayoutEffect 的区别:前者异步不阻塞绘制,后者同步会阻塞绘制。
useMemo 和 useCallback 的区别:前者缓存值,后者缓存函数引用。
setState 为什么看起来异步:因为它会把更新放入队列,触发调度后再重新渲染。
为什么 Hooks 只能在函数组件或自定义 Hook 里调用:只有这些场景才有对应的 Fiber 节点和 Hook 链表。
-
一文看懂React Hooks流程,别再被面试官问倒了一文看懂 React Hooks 流程,别再被面试官问倒了React Hooks 的底层机制其实不复杂,核心就一句话:React 靠“调用顺序 + 链表”来记住每个 Hook 的状态。一次渲染里,Hooks 的真实顺序组件每次渲染都会经历这些阶段:执行组件函数,按顺序调用 useState、useMemo、useCallback、...
-
搞懂Qwik,你的前端之路会顺畅很多Qwik 的核心价值在于把前端性能瓶颈从「怎么优化水合」变成了「根本不需要水合」。它不是 React 的替代品,而是针对首屏可交互时间(TTI)这个特定问题的全新解法。Qwik 到底解决了什么传统 SSR 框架(Next.js、Nuxt 等)的流程是:服务端渲染 HTML → 客户端下载 JS → 重新...
-
【推荐收藏】PWA怎么做全套资源大合集推荐收藏】PWA 怎么做全套资源大合集一句话总纲:PWA = HTTPS + manifest.json 应用清单 + Service Worker 服务工作线程三大基石;实现桌面安装、离线可用、推送通知、独立窗口运行;本文包含原理、最简代码、缓存策略、工具链、模板、调试、打包上架、踩坑清单,适合原生 ...
-
【推荐收藏】性能监控全套资源大合集性能监控是个跨层级的话题,我把资源按「基础设施 → 应用/链路 → 前端 → 压测」四层整理成合集,文档和视频都配齐了。 一、基础设施与云原生监控(Prometheus + Grafana)这是目前云原生环境的事实标准组合:Prometheus 负责时序数据采集与 PromQL 查询,Grafana 负责可视...
-
【亲测好用】前端设计模式的最佳解决方案【亲测好用】前端设计模式的最佳解决方案前端设计模式不是花里胡哨的八股,而是针对页面、组件、状态、请求、渲染、业务解耦这些高频痛点的成熟套路。没有万能模式,核心原则:优先简单,按需选用;避免过度设计。下面按前端最常用场景,整理亲测落地的方...
-
进阶Vue3与竞品全维度对比,帮你做出最佳选择2026年Vue3与竞品全维度对比:按场景选,比按喜好选更靠谱2026年前端框架格局已从"两强争霸"演变为"四极共存"——React仍是市场主流,Vue3完成生态闭环,Svelte站稳编译范式,Solid用信号模型挑战心智负担。 更关键的是,所有框架正在围绕编译时优化 + 细粒度响应式 ...