news 2026/6/14 22:10:07

类为什么在前端框架用的越来越少了?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
类为什么在前端框架用的越来越少了?

类(class)在前端框架里为什么越来越少用了?

这是一个非常真实的趋势,尤其在 React、Vue 3、Svelte 等现代前端框架的生态里,基于 class 的组件写法正在被逐渐边缘化,取而代之的是函数式组件 + Hooks(或 Composition API)。

下面是目前最核心的几条原因,按重要程度排序:

1. Hooks / Composition API 带来了更自然的代码组织方式

class 组件的问题在于:生命周期和状态逻辑是分散在不同方法里的,同一个功能的代码被切分成多个生命周期方法:

class UserProfile extends Component { state = { user: null, loading: true }; componentDidMount() { this.fetchUser(); } componentDidUpdate(prevProps) { if (prevProps.id !== this.props.id) { this.fetchUser(); } } fetchUser = async () => { ... } }

而用 Hooks / Composition API 后,逻辑可以按“功能”聚合

function UserProfile({ id }) { const [user, setUser] = useState(null); const [loading, setLoading] = useState(true); useEffect(() => { const fetchUser = async () => { setLoading(true); const data = await api.getUser(id); setUser(data); setLoading(false); }; fetchUser(); }, [id]); // 依赖变化自动重跑 // 所有和「获取用户」相关的逻辑都在一起 }

结论:Hooks 让“关注点分离”变成了“关注点聚合”,代码更直观、更容易复用。

2. class 的 this 绑定问题太痛苦

几乎每个前端开发者都踩过这些坑:

  • 忘记 bind → 点击事件 this 变成 undefined
  • 在 render 里写onClick={this.handleClick.bind(this)}→ 每次渲染都创建新函数
  • 用箭头函数解决 → 类里到处是箭头函数,代码看着别扭
  • constructor 里一堆 this.xxx = this.xxx.bind(this)

Hooks 彻底消灭了this的概念,从根源上解决了这个问题

3. 函数组件 + Hooks 性能更好(官方优化方向)

  • 函数组件本身更轻量(没有实例、没有 prototype 链)
  • React 官方从 16.8 开始把所有新特性都优先给函数组件(Suspense、Concurrent Mode、Server Components、use() 等)
  • class 组件的很多特性(如 getDerivedStateFromProps、componentDidCatch)在 Hooks 时代都有更好的替代方案

React 官方文档现在甚至把 class 组件放在“旧写法”章节,强烈推荐函数组件

4. 更好的 Tree Shaking 和打包体积

函数组件 + Hooks 更容易被 bundler(webpack、esbuild、rolldown、turbopack 等)做 tree-shaking。

class 组件因为有实例方法、生命周期、this 绑定等,很难被完全消除死代码。

5. 社区和生态已经全面转向函数式

  • 2020 年之后,几乎所有新库、新组件、新教程都默认用 Hooks
  • 大量经典库(如 react-query、zustand、swr、jotai、valtio、tanstack table 等)都是基于 Hooks 设计的
  • 用 class 写组件反而会显得“过时”,在团队协作中增加心智负担

6. Composition API / Signals 进一步加速了“无 class”趋势

Vue 3 的 Composition API、SolidJS 的 Signals、Svelte 的 runes、Angular 的新控制流 + inject(),都在往纯函数 + 响应式变量的方向演进,几乎完全抛弃了 class 的写法。

那 class 还有什么场景会用?

目前还在用 class 的主流场景其实已经很少了,主要剩下:

  • 遗留项目(不得不维护的老代码)
  • 需要使用 React 的 ErrorBoundary(目前官方仍推荐 class 组件做 ErrorBoundary)
  • 某些特殊的高阶组件(HOC)场景(但现在也越来越少)
  • 企业内部的“规定必须用 class”(极少数)

总结:为什么 class 被抛弃的本质

class 组件的设计是面向对象的,而现代前端更倾向于函数式 + 组合式编程范式。

函数式写法 + Hooks / Composition在以下维度全面胜出:

  • 逻辑聚合度更高
  • 没有 this 绑定地狱
  • 更容易复用逻辑(自定义 Hook / composable function)
  • 官方优先支持新特性
  • 生态和社区共识已经转向
  • 更符合现代 JS/TS 的发展方向(const/let、箭头函数、解构、模块化)

一句话:

class 组件在前端不是“不好用”,而是“不再是最优解”了。

现在的趋势是:能用函数组件 + Hooks 的地方,尽量不用 class

你现在项目里还在用 class 组件吗?还是已经完全切到 Hooks 了?

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/14 8:21:18

探索Matlab/Simulink中的三相异步电机弱磁控制仿真模型

Matlab/Simulink仿真模型 三相异步电机弱磁控制 附赠模型指导 在电机控制领域,三相异步电机凭借其结构简单、运行可靠等优点,广泛应用于工业生产等各个领域。而弱磁控制技术则是提升三相异步电机在高速运行时性能的关键手段。今天,咱就来唠唠…

作者头像 李华
网站建设 2026/6/10 18:29:15

STAR-CCM+计算资源“弹性资源池”动态伸缩与智能调度策略

为什么说STAR-CCM的弹性资源池功能改变了计算流体力学的使用方式?作为一名使用STAR-CCM多年的技术人员,我最常听到用户抱怨的是:“我做仿真计算时,资源不够用!” 或者是 “我刚排队几小时,结果任务还没跑完…

作者头像 李华
网站建设 2026/6/12 21:57:00

告别论文焦虑!百考通AI:你身边的本科毕业论文智能搭档

又到一年毕业季,当朋友圈开始被旅行、入职的喜悦刷屏时,总有一群人在深夜的电脑前“苦大仇深”——他们就是正在与本科毕业论文“死磕”的学子。选题没方向、文献如大海、框架一团麻、内容挤不出、格式总报错…… 这些“经典难题”几乎成了每位毕业生的“…

作者头像 李华
网站建设 2026/5/29 16:24:51

HoRain云--5分钟搞定SpringBoot连接MySQL

🎬 HoRain云小助手:个人主页 🔥 个人专栏: 《Linux 系列教程》《c语言教程》 ⛺️生活的理想,就是为了理想的生活! ⛳️ 推荐 前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!…

作者头像 李华
网站建设 2026/6/12 16:12:31

京唐港潮汐表查询2026-02-10

位置:京唐港,日期:2026-02-10,农历:乙巳[蛇]年十二(腊)月廿三,星期:星期二,潮汐类型:小潮死汛最高水位:144.00cm,最低水位:35.00cm&am…

作者头像 李华
网站建设 2026/6/2 19:16:07

AI写论文好帮手!4款AI论文生成工具,助你顺利完成论文!

在撰写期刊论文、毕业论文或职称论文时,许多学术人员常常会遇到不少困难。面对海量的参考文献,寻找相关资料仿佛是在大海中捞针,既耗时又费力。严格的格式要求让很多人感到无从下手,时常忙得焦头烂额。而一遍又一遍的修改内容&…

作者头像 李华