类组件和函数组件是 React 的两种组件形式,面试常问两者区别、优缺点及选型,核心是“现在主流用函数组件 + Hooks”,回答时要突出时代趋势。
一、核心区别
1. 语法形式:
类组件:通过 class 定义,继承 React.Component,有 this 指向,需要实现 render 方法返回 JSX。
函数组件:通过普通函数定义,无需继承,直接返回 JSX,无 this 指向。
2. 状态管理:
类组件:通过 state 定义状态,用 this.setState() 修改状态,触发重新渲染。
函数组件:最初是无状态组件,React 16.8 引入 Hooks 后,可通过 useState、useReducer 管理状态。
3. 生命周期:
类组件:有完整的生命周期方法(如 componentDidMount、componentDidUpdate、componentWillUnmount)。
函数组件:无生命周期方法,通过 useEffect Hook 模拟生命周期。
4. 代码复杂度:
类组件:语法繁琐,易出现 this 指向问题,代码复用麻烦(需用 HOC、Render Props)。
函数组件:语法简洁,无 this 问题,代码复用更灵活(用自定义 Hooks)。
二、选型建议
现在 React 主流推荐使用「函数组件 + Hooks」,原因:语法简洁、易维护、代码复用性强、更适合 TypeScript 结合;类组件仅在维护旧项目时使用,新项目不推荐。
——个人观点 · 仅供参考——