Skip to content

React 文档

导读与全书目录表:见同目录 01-React 入门:简介·特性与设计范式.md 开头。


一、React 核心基础(入门与进阶)

1. React核心概念深度理解

  • 虚拟DOM(VDOM):原理、与真实DOM的区别、diff算法(key的作用、同级比较、分层比较)

  • Fiber架构:核心解决问题(栈协调器的缺陷)、工作流程(调度阶段Scheduler、协调阶段Reconciliation、提交阶段Commit)

  • React生命周期:类组件生命周期(挂载/更新/卸载全阶段)、函数组件生命周期(useEffect模拟,依赖项配置)

  • JSX本质:不是模板语言,是React.createElement的语法糖,编译过程与Babel的关系

2. 组件相关

  • 组件类型:函数组件vs类组件(优缺点、适用场景)、纯组件(PureComponent)、高阶组件(HOC)、Render Props

  • 组件通信:父子组件(props、回调函数)、跨层级组件(Context API、useContext,避免滥用场景)、兄弟组件(状态提升、事件总线)

  • 组件复用:HOC与Render Props对比、自定义Hooks封装(复用逻辑的最佳实践)

3. Props与State

  • Props:只读性、默认值(defaultProps)、类型校验(PropTypes/TypeScript)、Props传递优化(memo浅比较)

  • State:不可变性(为什么不能直接修改state、immutable的应用)、setState特性(异步更新、批量更新、第二个回调函数)

  • 状态管理区别:局部状态(useState)、全局状态(后续单独模块)

二、React Hooks(进阶核心)

1. 基础Hooks深度解析

  • useState:原理(闭包陷阱及解决方案、函数式更新的场景)、惰性初始化(避免重复计算)

  • useEffect:依赖项(空依赖、依赖具体值、无依赖的区别)、清除副作用(返回函数的执行时机)、避免无限循环的技巧

  • useContext:使用场景、性能优化(避免不必要的重渲染)、与Redux的结合

2. 高级Hooks应用与原理

  • useReducer:原理、与useState的区别、复杂状态管理场景(多状态联动)

  • useCallback:作用(缓存函数,避免子组件不必要重渲染)、依赖项配置、与memo的配合使用

  • useMemo:作用(缓存计算结果,优化渲染性能)、与useCallback的区别、使用误区(过度缓存)

  • useRef:作用(获取DOM元素、保存持久化值,不触发重渲染)、与useState的区别、闭包中的应用

3. 自定义Hooks与 Hooks 规则

  • 自定义Hooks:命名规范(use开头)、封装原则(单一职责、可复用)、常见自定义Hooks(useRequest、useDebounce、useThrottle)

  • Hooks规则:只能在函数组件/自定义Hooks中使用、只能在顶层调用(不能在条件/循环/嵌套函数中)、 eslint-plugin-react-hooks的作用

  • Hooks底层原理:Hook链表、dispatcher机制、闭包与Hooks的关系

三、React性能优化(高级重点,体现能力)

1. 渲染优化

  • 组件重渲染控制:React.memo(浅比较的局限性及解决办法)、useCallback、useMemo

  • 避免不必要的渲染:拆分组件(细粒度组件)、避免props穿透、Context拆分(减少Context更新范围)

2. 代码与资源优化

  • 代码分割:React.lazy + Suspense(路由级分割、组件级分割)、动态import()

  • 资源优化:图片懒加载、路由预加载、第三方库按需引入(tree-shaking)

3. 高级优化手段

  • 虚拟列表:react-window/react-virtualized(长列表优化,减少DOM节点)

  • memoization优化:reselect库(Redux状态缓存)、immutable.js(避免深层对象修改导致的重渲染)

  • 性能监控:React DevTools Profiler(分析渲染瓶颈)、Lighthouse性能分析

四、React状态管理(高级必备,多方案对比)

1. Redux生态(核心重点)

  • 核心原理:Store、Action、Reducer(纯函数要求)、Dispatch、中间件(Middleware)

  • Redux进阶:Redux Toolkit(RTK,简化配置,createSlice、createAsyncThunk)、不可变性(immer库的应用)

  • React-Redux:useSelector(选择器优化,shallowEqual)、useDispatch、Provider

  • 常见问题:Redux性能优化(避免过度渲染)、异步操作(thunk、saga对比)

2. 其他状态管理方案

  • MobX:原理(响应式编程)、与Redux的区别、适用场景

  • Recoil/Zustand/Jotai:轻量级状态管理,解决Context痛点,适用中小型项目

  • 状态管理选型:根据项目规模、团队熟悉度、性能需求选择(大型项目RTK,小型项目Zustand/Context)

五、React路由(React Router,常见要点)

1. 核心用法与原理

  • React Router v6核心API:BrowserRouter、Routes、Route、Link、Navigate、useNavigate、useParams、useLocation

  • 路由模式:HashRouter vs BrowserRouter(区别、后端配置要求)

  • 路由原理:前端路由实现方式(hashchange、popstate、history API)

2. 高级应用

  • 路由守卫:导航守卫(useEffect监听location变化、自定义PrivateRoute私有路由)

  • 路由嵌套与参数传递:动态路由(params)、查询参数(search)、state参数

  • 路由优化:路由懒加载、路由预加载、404页面配置

六、React高级特性与实战

1. 高级特性

  • Suspense与React.lazy: Suspense的作用(等待异步组件加载、数据请求)、fallback属性

  • Error Boundary:错误边界原理、作用(捕获组件渲染错误,避免整个应用崩溃)、使用场景(class组件实现,函数组件无法直接实现)

  • Portals:原理(将组件渲染到DOM树的其他位置)、使用场景(模态框、弹窗)

  • Server Components(RSC):核心概念、与客户端组件的区别、适用场景(提升首屏加载速度)

2. 实战场景问题

  • 异步数据请求:useEffect+axios/fetch、React Query/SWR(数据缓存、请求重试、刷新)

  • 表单处理:受控组件vs非受控组件、Formik/React Hook Form(表单验证、性能优化)

  • 跨域问题:前端解决方式(代理配置、CORS)、与后端配合要点

  • 移动端适配:React Native与React的区别、响应式布局实现(媒体查询、flex布局)

七、React周边生态与工程化

1. 工程化配置

  • 构建工具:Vite vs Webpack(配置、性能对比,React项目适配)

  • TypeScript与React:TSX语法、组件类型定义(Props类型、State类型)、泛型组件

  • ESLint与Prettier:React代码规范(eslint-plugin-react、eslint-plugin-react-hooks)、格式化配置

2. 周边库应用

  • UI组件库:Ant Design、Material-UI(定制主题、按需引入、性能优化)

  • 动画库:Framer Motion、React Spring(组件动画、过渡效果实现)

  • 测试工具:Jest + React Testing Library(组件测试、Hook测试、集成测试)