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

类组件(Classcomponent)和函数式组件 (Functionalcomponent)之间有何不同?

在 React 中,类组件 (Class Component) 和 函数式组件 (Functional Component) 都是用来定义 UI 的两种方式,但它们在语法、生命周期管理、状态处理等方面有显著区别。

定义方式

类型 定义示例
类组件 jsx<br>class MyComponent extends React.Component {<br> render() {<br> return <div>Hello, {this.props.name}</div>;<br> }<br>}<br>
函数组件 jsx<br>function MyComponent(props) {<br> return <div>Hello, {props.name}</div>;<br>}<br>

状态管理(State)

特性 类组件 函数组件
状态定义 this.state = { count: 0 } const [count, setCount] = useState(0)
状态更新 this.setState({ count: this.state.count + 1 }) setCount(count + 1)
是否支持 Hooks ❌ 不支持 ✅ 支持所有 Hooks(useState、useEffect、useMemo等)

生命周期(Lifecycle)

生命周期 类组件写法 函数组件对应写法
初始化 componentDidMount() useEffect(() => { ... }, [])
更新 componentDidUpdate() useEffect(() => { ... })
卸载 componentWillUnmount() useEffect(() => { return () => {...} }, [])

this 的区别

比较点 类组件 函数组件
是否使用 this ✅ 需要(访问 props/state) ❌ 不需要
绑定问题 必须在构造函数中绑定方法(或用箭头函数) 自动闭包捕获上下文,无需绑定

性能与简洁性

  • 函数组件更轻量、可读性高

  • 类组件稍显冗长,逻辑分散在多个生命周期函数中

  • React 团队官方推荐:优先使用函数组件 + Hooks

例子对比

类组件版
class Counter extends React.Component {state = { count: 0 };componentDidMount() {console.log('Mounted!');}render() {return (<button onClick={() => this.setState({ count: this.state.count + 1 })}>Count: {this.state.count}</button>);}
}
函数组件版(推荐)
import { useState, useEffect } from 'react';function Counter() {const [count, setCount] = useState(0);useEffect(() => {console.log('Mounted!');}, []);return (<button onClick={() => setCount(count + 1)}>Count: {count}</button>);
}

总结表

特性 类组件 函数组件
写法简洁
支持 Hooks
性能优化 一般 较好(React.memo等)
生命周期写法 复杂 简洁(useEffect统一处理)
推荐使用 不推荐新项目使用 ✅ 官方推荐

一句话总结

“类组件是旧时代的产物,函数组件是现代 React 的主流。”

http://www.zskr.cn/news/28033.html

相关文章:

  • 2025 年仿石漆厂家最新推荐品牌排行榜:聚焦真石漆水包砂等优质产品,助力采购方精准选品
  • D. Secret Passwords
  • Java EE初阶启程记02---认识线程 - 实践
  • springcloud中网关gateway总结
  • 郑州短视频代运营公司口碑榜:TOP3企业权威推荐
  • K.20
  • Docker 部署 Elasticsearch 全流程手册
  • AI元人文:创新决策、“躺平懒人”与针砭机制
  • TJ-26M-1612
  • MySQL的这6大雷区,大部分人都会踩中!
  • 实验台厂家哪家好?2025年度权威推荐榜单揭晓!
  • 2025年10月ai搜索排名优化推荐:头部企业合作案例选择列表
  • YOLOv11的ONNX Runtime加速推理指南-(跨平台部署的通用优化方案) - 指南
  • 排序算法学习笔记
  • 内网应用端口使用哪个范围的比较安全
  • 2025年10月AI搜索优化推荐:主流榜单对比与避坑指南
  • 2025 年国内喷雾干燥机最新推荐排行榜:聚焦优质品牌,助力企业精准选设备造粒/工业喷雾/陶瓷喷雾/制粒/奶粉喷雾干燥机厂家推荐
  • Python环境教程(一)-环境入门之pip conda
  • SQL Server 2008 R2 升级补丁需要注意的问题
  • pg数据库表的大小
  • 20251020_QQ_Cipher
  • 基于MATLAB/Simulink的光照强度模型构建方法
  • 2025年10月geo公司推荐:主流排行榜与避坑指南
  • 2025年10月又红又痒用什么产品推荐:口碑排行五款精华评价
  • 2025年10月美白精华产品推荐榜:临床验证数据排行
  • RJ45
  • ETH和TCP/IP报文协议与网络编程
  • 2025年10月黄黑皮美白产品榜:持证淡斑五强深度评测
  • 股票操作统计分析报告 - 2025年10月23日
  • 2025年10月黄褐斑改善产品推荐榜:权威排行与效果对比