一起深入盘点 2025 年 React 发展的 10个趋势?
ccwgpt 2025-05-16 12:15 18 浏览 0 评论
大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发!
1.React 服务器组件
React 服务器组件 (React Server Components) 方面取得了长足进步,该规范的第一个实现在 Next.js 13 中被引入,该规范于 2022 年 10 月 25 日在 Next.js Conf 上宣布。此版本标志着 App Router(app/ 目录)的开始,其完全采用了 RSC。
尽管 Next.js 13 (2022) 和 14 (2023) 一直是推动 RSC 的主要引擎(并且由于大胆引入该技术而收到很多负面反馈),但 Next.js 15 (2024) 为大众带来了更稳定的 RSC 。
2025 年很可能将是 React Server Components 成为 React 生态标准原语的一年,因为 React Router( 以前的 Remix)和 TanStack Start 也有望在其即将发布的版本中采用 RSC。
import db from "./database";
async function Note({id}) {
// NOTE: loads *during* render.
const note = await db.notes.get(id);
return (
<div>
<Author id={note.authorId} />
<p>{note}</p>
</div>
);
}
async function Author({id}) {
// NOTE: loads *after* Note,
// but is fast if data is co-located.
const author = await db.authors.get(id);
return <span>By: {author.name}</span>;
}
React 服务器组件 (RSC) 通过仅在服务器上执行一次,并将渲染的标记(而非 JavaScript)发送到客户端。其减少了客户端 JavaScript 包的大小,同时允许直接访问数据库、API 和后端逻辑,且无需将其暴露给浏览器。
RSC 可以与客户端组件一起工作,让开发者通过将繁重的逻辑保留在服务器上来优化性能,同时在需要时仍能实现交互。
2.React 服务器函数
React 服务器操作 (React Server Actions,RSA) 是作为 React 服务器组件的演进而引入的,其允许组件调用服务器函数来简化变更(例如:表单提交、数据库更新),为开发者提供类似于远程过程调用 (RPC) 的体验,而无需手动定义 API 路由。
"use server";
export async function updateName(name) {
if (!name) {
return {error: "Name is required"};
}
await db.users.updateName(name);
}
"use client";
import {updateName} from "./actions";
function UpdateName() {
const [name, setName] = useState("");
const [error, setError] = useState(null);
const [isPending, startTransition] = useTransition();
const submitAction = async () => {
startTransition(async () => {
const {error} = await updateName(name);
if (error) {
setError(error);
} else {
setName("");
}
});
};
return (
<form action={submitAction}>
<input type="text" name="name" disabled={isPending} />
{error && <span>Failed: {error}</span>}
</form>
);
}
然而,虽然 RSC 改善了数据获取的开发者体验 (DX),RSA 简化了变异(数据变更),但在客户端组件中获取数据依然棘手。例如,在 Next.js 中,开发者必须自定义 API 路由来获取客户端组件的数据,从而与 RSC 和 RSA 改进的 DX 不一致。
一个临时的解决方法是使用 React Server Actions 在客户端组件中获取数据,尽管这种方法有一些缺点。
可喜的是, 2024 年 9 月 React 团队官宣支持 React Server Functions (RSF) 作为在服务器组件和客户端组件中获取和变异数据的总称,而 RSA 只是用于变异数据的 RSF 的子集。
服务器函数(RSF) 允许客户端组件调用在服务器上执行的异步函数。
当使用 “use server” 指令定义服务器函数时,框架将自动创建对服务器函数的引用,并将该引用传递给客户端组件。当在客户端调用该函数时,React 将向服务器发送请求以执行该函数并返回结果。
服务器函数 可以在服务器组件中创建并作为 props 传递给客户端组件,也可以在客户端组件中导入和使用。
// 服务器组件
import Button from "./Button";
function EmptyNote() {
async function createNoteAction() {
// 服务器组件使用 "use server" 指令声明服务器函数
"use server";
await db.notes.create();
}
return <Button onClick={createNoteAction} />;
}
值得注意的是,目前还没有一个 React 框架实现 React Server Functions(尚未进入测试阶段),但可以预期其很可能在 Next.js、TanStack Start 和 React Router 的未来版本中引入。
3.React Forms 的优化
React 19 于 2024 年底发布,为 React 生态带来了许多改进。虽然 React Server Components 和 React Server Functions 是该版本的核心,但 React Forms 也值得关注。
React Forms 最大的变化是 <form> 元素上的 action 属性,其允许开发者指定在提交表单时应调用的服务器 Action。
import {updateCart} from "./lib.js";
function AddToCart({productId}) {
async function addToCart(formData) {
"use server";
const productId = formData.get("productId");
await updateCart(productId);
}
return (
<form action={addToCart}>
// form 支持 action 属性
<input type="hidden" name="productId" value={productId} />
<button type="submit">Add to Cart</button>
</form>
);
}
React 19 还引入了新的 Hooks,例如: useFormStatus、useOptimistic 和 useActionState 等,主要专注于管理表单及其客户端交互。
import {useFormStatus} from "react-dom";
import {submitForm} from "./actions.js";
function Submit() {
const {pending} = useFormStatus();
// 要在提交表单时显示 pending 状态
// 开发者可以调用 <form> 中渲染的组件中的 useFormStatus Hook 并读取 pending
return (
<button type="submit" disabled={pending}>
{pending ? "Submitting..." : "Submit"}
</button>
);
function Form({action}) {
return (
<form action={action}>
<Submit />
</form>
);
}
export default function App() {
return <Form action={submitForm} />;
}
有了这些新功能,React 中的表单处理变得更加强大和灵活。
4.React 框架的全新发展
虽然 Next.js 目前是最流行的 React 框架,但其他框架很可能会在 2025 年获得新的关注,例如:TanStack Start 和 React Router。
React Router v7 是 Remix 继 v2 之后的下一个主要版本,如果已启用所有 Remix v2 未来标志,则从 Remix v2 升级到 React Router v7 则主要只涉及更新依赖项。
虽然 TanStack Start 在很大程度上构建在 TanStack Router 之上,属于新产品,但 React Router 是一个成熟的库,在 Remix 沉寂了一段时间后正在演变成一个成熟的前端框架。
import {type RouteConfig} from "@react-router/dev/routes";
import {remixRoutesOptionAdapter} from "@react-router/remix-routes-option-adapter";
export default remixRoutesOptionAdapter((defineRoutes) => {
return defineRoutes((route) => {
route("/", "home/route.tsx", { index: true});
route("about", "about/route.tsx");
route("","concerts/layout.tsx", () => {
route("trending", "concerts/trending.tsx");
route(":city", "concerts/city.tsx");
});
});
}) satisfies RouteConfig;
这两个框架在 React Server Component 和 Server Function 支持方面仍处于早期,但有可能成为 React 生态的主要参与者,并提供 Next.js 的替代方案。
5. 全栈 React
服务器驱动的 React 功能,例如: React Server Components 和 React Server Functions 的兴起为使用 React 的全栈 Web 应用铺平了道路,而且趋势非常突出。
但在 RSC 和 RSF 中访问数据库只是一个开始,全栈 Web 应用需要完整的后端基础设施,包括:身份验证、授权、消息队列、电子邮件服务 等等。
然而,虽然后端服务对于全栈应用至关重要,但客户端与服务器之间的通信仍至关重要,即使像 React Server Functions 这样的远程过程调用。因此,2025 年很可能看到更简化的验证和 HTTP 状态代码处理的用户体验。
6. React 与 Shadcn UI
近年来,Shadcn UI 已成为 React 项目的标配,就像 Tailwind CSS 一样。其 通过预设但支持组件自定义 的方式,在便利性和灵活性之间取得了平衡,使其成为不受传统库限制的开发者的首选。
import {Terminal} from "lucide-react";
import {Alert, AlertDescription, AlertTitle} from "@/components/ui/alert";
export function AlertDemo() {
return (
<Alert>
<Terminal className="h-4 w-4" />
<AlertTitle>Heads up!</AlertTitle>
<AlertDescription>
You can add components to your app using the cli.
</AlertDescription>
</Alert>
);
}
该趋势标准化了现代 React 样式,但随着大部分项目的趋同,下一个大型 UI 库很可能呼之欲出。
6. React 和 AI 的融合
AI 和 React 的交集主要包括两个方面:
- React 代码被广泛用于训练 AI 模型。因此,像 v0 这样的 AI 工具正在生成 React 代码,且可以非常容易地将其集成到项目中。
- 随着 React 通过 RSC 和 RSA 演变为全栈框架,其正在成为构建 AI 驱动应用的理想选择。 Vercel 的 AI SDK 和 LangChain 等库进一步增强了 React 开发复杂 AI 解决方案的能力。
import {generateText} from "ai";
import {openai} from "@ai-sdk/openai";
const {text} = await generateText({
model: openai("o3-mini"),
prompt: "What is love?",
});
7.React 的工具链 Biome
设置 ESLint 和 Prettier 让很多开发者如芒刺背,尤其是在协同场景,但其又是 Web 开发者必不可少的工具。Biome(前身为 Rome)旨在通过快速、一体化的工具链解决方案简化这一过程。
{
"$schema": "https://biomejs.dev/schemas/1.9.4/schema.json",
"vcs": {
"enabled": false,
"clientKind": "git",
"useIgnoreFile": false
},
"files": {"ignoreUnknown": false, "ignore": [] },
"formatter": {"enabled": true, "indentStyle": "tab"},
"organizeImports": {"enabled": true},
"linter": {
"enabled": true,
"rules": {"recommended": true}
},
"javascript": {"formatter": { "quoteStyle": "double"} }
}
另一个有前途的替代方案是 oxc。
Biome 因在 Rust 中创建性能更高的格式化程序而获得了 Prettier 的 20,000 美元赏金,但是开发者是否会广泛采用还有待观察。
各种论坛(例如: Next.js)都在讨论如何减少对 ESLint 的严格依赖并允许使用其他 linter,而 Biome 就是热门候选。
8. React 编译器
很多 React 开发者都对 useCallback、useMemo 和 memo 等方法爱又恨。虽然 React 需要明确的性能优化,但其他框架却选择默默在背后完成一切。
import reactCompiler from "eslint-plugin-react-compiler";
export default [
{
plugins: {
"react-compiler": reactCompiler,
},
rules: {
"react-compiler/react-compiler": "error",
},
},
];
React 团队开发了一个 React Compiler,以自动化 React 应用程序中的所有缓存。该编译器旨在消除 手动缓存函数(useCallback)、值(useMemo)和组件(memo) 的需要。React 将自动处理这些优化,减少每次渲染时重新计算的需要。
截至今天,开发者可以试用测试版的 React Compiler。
参考资料
声明:文章主体框架参考 Robin Wieruch 编写的文章《React Trends in 2025》,但是加了部分自己的理解。
https://react.dev/reference/rsc/server-components
https://www.robinwieruch.de/react-trends/
https://react.dev/reference/rsc/server-functions
https://www.robinwieruch.de/next-server-actions-fetch-data/
https://react.dev/reference/react-dom/components/form
https://www.robinwieruch.de/react-tech-stack/
https://react.dev/learn/react-compiler
https://www.tristatetechnology.com/blog/future-of-reactjs-trends-innovations
相关推荐
- 谷歌正在为Play商店进行Material Design改造
-
谷歌最近一直忙于在其应用程序中完成MaterialDesign风格的改造,而Play商店似乎是接下来的一个。9to5Google网站报道,有用户在Play商店的最新版本中发现了新界面,暗示该应用和网...
- 企业网站免费搭建,定制化建站CMS系统
-
科腾软件企业网站CMS管理系统已完成开发工作,首次开源(全部源码)发布。开发工具:VisualStudioEnterprise2022数据库:SQLite(零配置,跨平台,嵌入式)开发...
- 您需要的 11 个免费 Chrome 扩展程序
-
来源:SEO_SEM营销顾问大师Chrome扩展程序是SEO的无名英雄,他们在幕后默默工作,使您的策略脱颖而出并提高您的努力效率。从竞争对手研究到审核您的网站,速度比您说“元描述”还快,这些小工具发...
- 户外便携设备抗干扰困境如何破局?CMS-160925-078S-67给出答案
-
在户外复杂的电磁环境中,便携式设备中的扬声器需具备出色抗干扰能力,CUID的CMS-160925-078S-67在这方面表现突出。 从其结构设计来看,矩形框架虽主要为适配紧凑空...
- 一个基于NetCore开发的前后端分离CMS系统
-
今天给大家推荐一个开源的前后端分离架构的CMS建站系统。项目简介这是一个基于.Net3构建的简单、跨平台、模块化建站系统。系统业务简单、代码清晰、层级分明、全新架构便于二次扩展开发。支持多种数据库,...
- 本地Docker部署ZFile网盘打造个人云存储
-
前言本文主要介绍如何在LinuxUbuntu系统使用Docker本地部署ZFile文件管理系统,并结合cpolar内网穿透工具实现远程访问本地服务器上的ZFile传输与备份文件,轻松搭建个人网盘,无...
- pcfcms企业建站系统 免费+开源的企业内容管理系统
-
项目介绍pcfcms是基于TP6.0框架为核心开发的免费+开源的企业内容管理系统,专注企业建站用户需求提供海量各行业模板,降低中小企业网站建设、网络营销成本,致力于打造用户舒适的建站体验。演示站...
- 【推荐】一个高颜值且功能强大的 Vue3 后台管理系统框架
-
如果您对源码&技术感兴趣,请点赞+收藏+转发+关注,大家的支持是我分享最大的动力!!!项目介绍SnowAdmin是一款基于Vue3、TypeScript、Vite5、Pinia、Arco-Desi...
- java开源cms管理系统框架PublicCMS后台管理系统
-
一款使用Java语言开发的CMS,提供文章发布,图片展示,文件下载,用户权限、站点模块,内容管理、分类等功能。可免费用于商业用途maven工程数据库脚本在工程中database文件夹下代码结构:效果...
- 一定要大量读书:当我问Deepseek,它给出的高效阅读方法厉害了!
-
一年一度的世界读书日,总该写点什么。于是,我去问Deepseek给我推荐人生破局必读的10本书,结果它给了我回复,竟然10本推荐的书籍里,我都曾经浏览过,同时还给出破局关键。而说浏览过,不是读过,是因...
- 《搜神札记》:不应磨灭的惊奇(小说《搜神记》)
-
□黄勃志怪传说的书写一直是文人墨客的后花园,晚近尤盛,从张岱到袁枚到纪昀,收集那些或阴森或吊诡的行状故事,遂成一类,到民国年间,周作人挟此遗传,捋袖子拿希腊神话动刀,乃兄鲁迅不甘其后,《故事新编》虎...
- 《如何构建金字塔》之第三章总结(构建金字塔结构的方法有)
-
“没有什么比一套好理论更有用了。”——库尔特.勒温这篇读后感依然引用了这句库尔特.勒温名言,这句话也是我读芭芭拉.明托这本书的初衷。今天就“如何构建金字塔”,我来谈谈我的读后心得。我热爱写作,但是写...
- 《助人技术》第一章助人引论内容框架
-
第一章内容基本呈现如何成为助人者(心理咨询师)以及一些相关基础知识,对于进入这个行业有兴趣以及希望通过心理咨询寻求帮助但存有疑虑的当事人,都值得一读。心理咨询的三个阶段(不是说严格的三个阶段,而是广义...
- AI助手重构读后感写作流程:从提纲到完整性思考的转换
-
大家好!你有没有遇到过读完一本书,想要写读后感,却不知道从何下手的情况呢?今天我们要来探讨一下如何利用稿见AI助手来重构读后感写作流程,从提纲到完整性思考的转换。让我们一起来看看这个全新而又实用的方法...
- 图解用思维导图做读书笔记技巧(图解用思维导图做读书笔记技巧视频)
-
做阅读笔记非常有利于读后进行有效的深入思考,而思维导图这一强大的工具其最大的特点就是架构清晰,在阅读过程中对文章的分析、总结、分类起着很大的辅助作用。思维导图读书笔记步骤:1、阅读大纲。首先要快速浏览...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- MVC框架 (46)
- spring框架 (46)
- 框架图 (58)
- flask框架 (53)
- quartz框架 (51)
- abp框架 (47)
- jpa框架 (47)
- laravel框架 (46)
- springmvc框架 (49)
- 分布式事务框架 (65)
- scrapy框架 (56)
- shiro框架 (61)
- 定时任务框架 (56)
- java日志框架 (61)
- JAVA集合框架 (47)
- mfc框架 (52)
- abb框架断路器 (48)
- grpc框架 (55)
- ppt框架 (48)
- 内联框架 (52)
- cad怎么画框架 (58)
- ps怎么画框架 (47)
- ssm框架实现登录注册 (49)
- oracle字符串长度 (48)
- oracle提交事务 (47)