前端/移动开发面试题更新 2026-08-05

在 React 中,类组件和函数式组件在设计理念、状态管理和生命周期处理上有哪些主要不同?请结合 Hooks 的出现谈谈这种差异。

前端/移动开发技术原理方案权衡React

考察说明

考查对 React 两种组件模型的本质区别以及 Hooks 引入对函数式组件能力提升的理解。

回答思路

  1. 【回答框架 1】类组件基于 ES6 class 定义,通过 constructor 中 this.state 初始化状态,使用 this.setState 更新,依靠 componentDidMount、componentDidUpdate、componentWillUnmount 等生命周期方法管理副作用。
  2. 【回答框架 2】函数式组件最初是无状态且没有生命周期,只接收 props 并返回 JSX;React 16.8 引入 Hooks 后,可通过 useState 管理状态,useEffect 模拟生命周期,useContext 消费上下文,使函数式组件具备了完善的逻辑复用能力且代码更简洁。
  3. 【回答框架 3】二者核心差异在于状态管理方式(state 对象与 this 绑定 vs useState 独立 state 变量)、生命周期处理(显式生命周期方法 vs useEffect 统一处理副作用)、逻辑复用(HOC/render props vs 自定义 Hooks)以及性能优化(shouldComponentUpdate vs React.memo)。
  4. 【回答框架 4】现代 React 官方推荐函数式组件,类组件仍被支持但新特性较少,使用类组件时需注意 this 绑定的问题。
  5. 【关键点 1】类组件使用 this.state 和 this.setState,函数式组件使用 useState 和 setState。
  6. 【关键点 2】类组件的生命周期通过方法显式调用,函数式组件使用 useEffect 模拟。
  7. 【关键点 3】函数式组件配合 Hooks 代码更简洁,逻辑复用通过自定义 Hooks 实现。
  8. 【关键点 4】类组件存在 this 绑定问题,函数式组件则不存在。
  9. 【关键点 5】性能优化上,类组件用 shouldComponentUpdate,函数式组件用 React.memo。
  10. 【易错点 1】不能简单说函数式组件功能更弱,引入 Hooks 后其能力已全面超越类组件。
  11. 【易错点 2】需区分 Hooks 与生命周期方法,useEffect 的依赖数组决定执行时机,不是严格对应 componentDidMount。
  12. 【易错点 3】函数式组件每次渲染都会重新执行,需注意避免不必要的计算。