当前位置: 首页 > news >正文

React类组件和函数组件的所有核心区别

一句话总结论

React 16 类组件:老写法,用 class、this、生命周期。
React 18 函数组件:新写法,用 Hooks,无 this,更简洁、性能更好。


一、最核心区别(必背)

对比React 16 类组件React 18 函数组件(Hooks)
写法class extends Componentfunction + Hooks
this必须用 this完全没有 this
状态this.state/this.setStateuseState
生命周期componentDidMountuseEffect一统天下
逻辑复用mixins / HOC / renderProps自定义 Hooks
代码量多、臃肿少、简洁
并发渲染不支持完美支持
性能一般更好

二、代码直接对比(一看就懂)

1. 定义组件

类组件(React 16)

import React from 'react' class App extends React.Component { render() { return <div>hello</div> } }

函数组件(React 18)

import React from 'react' function App() { return <div>hello</div> }

2. 状态(数据)

类组件

state = { count: 0 } add = () => { this.setState({ count: this.state.count + 1 }) }

函数组件

import { useState } from 'react' const [count, setCount] = useState(0) const add = () => setCount(count + 1)

3. 发起请求(挂载时)

类组件(生命周期)

componentDidMount() { fetch('/api').then(res => res.json()) }

函数组件(useEffect)

useEffect(() => { fetch('/api').then(res => res.json()) }, [])

4. 监听数据变化

类组件

componentDidUpdate(prevProps) { if (prevProps.count !== this.props.count) { // 变化了 } }

函数组件

useEffect(() => { // 变化了 }, [count])

三、生命周期 VS Hooks(超级重要)

类组件的生命周期,全部可以被 useEffect 替代

类组件生命周期函数组件 Hooks
constructoruseState
componentDidMountuseEffect(..., [])
componentDidUpdateuseEffect(..., [依赖])
componentWillUnmountuseEffect返回清理函数
shouldComponentUpdateReact.memo

一句话:
一个 useEffect 搞定类组件所有生命周期!


四、逻辑复用方式(天差地别)

类组件

只能用:

  • 高阶组件 HOC
  • render props
  • mixins(废弃)

→ 代码嵌套多,嵌套地狱

函数组件

自定义 Hooks

function useCount() { const [count, setCount] = useState(0) return [count, setCount] }

→ 干净、简洁、无嵌套、复用极强


五、性能与架构(React 18 关键)

类组件

  • 不支持并发渲染
  • 不支持自动批处理
  • 无法优化逻辑
  • this 容易出错

函数组件(React 18)

  • 支持并发渲染(页面不卡顿)
  • 支持自动批处理(性能暴涨)
  • 支持 Suspense、useTransition
  • 无 this,无生命周期混乱

六、最简单总结(面试必背)

类组件(React 16)

  • 老技术
  • this
  • 生命周期繁多
  • 逻辑复用难
  • 不支持新特性

函数组件(React 18)

  • 现代 React 标准
  • this
  • 用 Hooks 替代一切
  • 逻辑复用简单
  • 支持所有新特性
  • 代码少、易维护、性能高

终极一句话

现在 React 开发,全部用函数组件+Hooks,类组件只用来维护老项目。

http://www.jsqmd.com/news/531970/

相关文章:

  • ViT图像分类模型量化压缩实战:从FP32到INT8
  • 技术深度解析:Video-Subtitle-Extractor如何实现精准视频硬字幕提取
  • 构建自动化测试流水线:对FUTURE POLICE模型进行持续集成
  • CTC语音唤醒模型与Vue.js的前端交互开发实战
  • NextionX2库:多屏HMI嵌入式显示控制新范式
  • 2026电能表校验服务优质推荐指南:单相电能表检定装置厂家/多功能电表校验公司/多功能电表校验厂家/三相电能表校验公司/选择指南 - 优质品牌商家
  • 突破付费墙限制:Bypass Paywalls Clean 浏览器扩展终极使用指南
  • RTX 4090D 24G镜像实操:PyTorch 2.8中torch.export导出模型供生产部署
  • 别再只用Entity了!Cesium数据可视化,Primitive和Entity到底该怎么选?
  • ExplorerPatcher定制工具:Windows界面效率提升与个性化配置全指南
  • Phi-3-mini-128k-instruct部署教程:基于vLLM的GPU算力适配与低显存运行方案
  • QMCDecode终极指南:如何一键解锁QQ音乐加密格式
  • 木屋定制优质厂家推荐:防腐木花架/防腐木花箱/三角木屋/庭院防腐木/户外木屋/户外防腐木/景区防腐木/木屋别墅/选择指南 - 优质品牌商家
  • Prompt提示词工程
  • 程序员转行AI大模型教程(非常详细),Java程序员逆袭之路:掌握大模型开发,开启高薪AI工程师人生
  • 白盒测试方法的实例演示
  • 2026医用病床优质厂家推荐榜合规售后双保障:病床厂家哪家好/病床厂家排名/医用床供应商/医用床厂家排名/医用床品牌推荐/选择指南 - 优质品牌商家
  • Mermaid Live Editor 图表可视化利器:实时编辑与多场景应用全指南
  • 快看2026年3月,目前口碑好的三坐标供应商分析情况,国内三坐标公司推荐技术领航,品质之选 - 品牌推荐师
  • ACE-Guard资源限制器:终极解决腾讯游戏卡顿的完整指南
  • vLLM-v0.17.1实际效果:动态Batch Size自适应调节机制效果分析
  • 无信号灯T型路口中一种用于解决车辆冲突的运动规划算法 1. MATLAB 2. 运动规划算法上下层
  • 逆向分析实战:用Ghidra快速定位CrackMe程序的‘关键判断函数’(以CTF题目为例)
  • 避坑指南:用QCPColorMap画热力图时,为什么你的double数据不显示?
  • Java中Lambda表达式核心概念解析
  • LFM2.5-1.2B-Thinking-GGUF应用场景:医疗科普内容生成与专业术语通俗化处理
  • nli-distilroberta-base多场景落地:客服质检、法律合规、教育评估一体化方案
  • Qwen2.5-VL-7B-Instruct多模态落地:零售货架图→SKU识别+缺货预警生成
  • B站 - 机器学习必修课:经典AI算法与编程实战 瞿炜
  • 如何解决MicroG GmsCore中的Google账户登录问题:完整用户与开发者指南