React 常见问题与最佳实践总结
一、是什么
本文是 React 面试系列的收官篇,将 React 核心知识体系进行系统性梳理,涵盖项目结构、状态管理选型、性能优化清单、常见反模式、React 18/19 迁移要点及面试备战策略。目标是帮助你在面试中建立起清晰的知识框架。
二、项目结构最佳实践
按功能模块组织(Feature-based)
核心原则:
- 按功能分目录而非按文件类型分目录
- 共享代码统一放在
shared/目录 - 每个功能模块通过
index.ts明确导出公共 API - 组件与其专属 hook、测试文件就近放置
三、状态管理选型指南
各方案对比
关键原则:优先使用 React 内置方案,只有当内置方案不够用时才引入外部库。服务端状态(API 数据)和客户端状态(UI 状态)应分开管理。
四、性能优化清单
渲染优化
加载优化
优化检查清单
- 使用 React DevTools Profiler 找到不必要的重渲染
- 大列表是否使用了虚拟滚动
- 路由是否做了代码分割(lazy + Suspense)
- 图片是否使用了 lazy loading 和适当格式(WebP/AVIF)
- Context value 是否用 useMemo 包裹
- 是否避免了在渲染函数中创建新对象/数组/函数
- 频繁更新的状态是否与不频繁更新的状态分离
- useEffect 依赖数组是否精确
五、常见反模式与解决方案
反模式一:在渲染中直接修改状态
反模式二:useEffect 作为状态同步工具
反模式三:过度使用 Context 导致性能问题
反模式四:忘记清理副作用
反模式五:Props 透传地狱
六、React 18/19 迁移要点
React 18 核心变更
迁移步骤:
React 19 新特性
七、知识体系概览
八、面试备战策略
高频考点优先级
必须掌握(出现率 > 80%):
- 虚拟 DOM 与 Diff 算法原理
- Hooks 使用与原理(useState、useEffect、自定义 Hook)
- 组件通信方式
- 性能优化手段
- 受控与非受控组件
重点掌握(出现率 50-80%):
- Fiber 架构
- 状态管理方案对比
- React 18 新特性
- 生命周期与 useEffect 对应关系
- key 的作用与原理
进阶加分(出现率 < 50%):
- React 19 新特性
- React Server Components
- 并发渲染深度
- 设计模式运用
- 测试策略
回答框架
面对 React 面试题,建议遵循这个结构:
- 是什么:一句话定义核心概念
- 为什么:解释这个特性解决了什么问题
- 怎么用:给出简洁的代码示例
- 深入:底层原理或实现机制
- 对比:与相关方案的对比(如有)
- 实践:在真实项目中的应用经验
关键心态
- 不要死记硬背 API,理解设计动机更重要
- 能讲清楚 "为什么这样设计" 比 "怎么用" 更有区分度
- 准备 1-2 个自己项目中的真实案例,说明如何解决实际问题
- 对不确定的知识坦诚说 "我了解大概原理但没有深入研究",比编造答案好得多