React 19 与 Next.js 中的服务器操作
了解服务器操作如何在服务器上执行、闭包捕获服务器上下文,以及如何向客户端返回数据
React 19 与 Next.js 中的服务器操作 是 CoddyKit 上的免费 React Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 React Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 React Academy 课程共包含 4 节课。
什么是服务器操作
服务器操作是异步函数,在服务器上而不是浏览器中执行。它们通过放置在文件顶部或函数体顶部的 'use server' 指令进行标记,向框架表明该函数绝不能在客户端运行。
访问服务器上下文
由于服务器操作在服务器上运行,因此可以访问完整的服务器上下文:数据库连接、环境机密、会话数据和文件系统资源。这与客户端组件有根本区别,客户端组件只能访问浏览器公开的内容。
HTTP 传输的底层原理
当客户端组件调用服务器操作时,Next.js 会自动向特殊的 RSC 端点发出 HTTP POST 请求。框架会处理参数的全部序列化和传输层逻辑,因此您无需为这些数据变更手动编写 fetch() 调用。
无需 API 路由
在许多数据变更场景中,服务器操作取代了 API 路由的需求。操作本身就是端点:您只需将逻辑定义为服务器函数一次,然后就可以直接从客户端组件调用它,就像调用本地函数一样。
React 19 的一等特性
服务器操作最初是 Next.js 特有的概念,但 React 19 将其提升为 React 的一等特性。这意味着 Next.js 之外的其他打包工具和框架也可以遵循 React 规范实现相同的模式。
稳定性与可用性
服务器操作在 React 19 RC 中仍处于实验阶段,但自推出以来,一直在 Next.js 14 及更高版本的应用路由器中保持稳定。如果您目前使用 Next.js 应用路由器构建生产应用,服务器操作是完全受支持且推荐使用的模式。
安全性:密钥保留在服务器端
服务器操作最重要的安全属性之一是密钥永远不会到达浏览器。在服务器操作内部使用的环境变量(例如数据库密码和 API 密钥)永远不会包含在客户端包中,因为函数体不会发送到浏览器。
表单与服务器操作
HTML 表单元素可以通过 action 属性直接接受服务器操作:<form action={myServerAction}>。React 会拦截表单提交,并将表单数据传递给服务器操作,从而无需任何客户端 JavaScript 支持代码即可执行服务器端数据变更。
请求与响应周期
触发服务器操作时,React 会将操作参数序列化到 POST 请求正文中。服务器会对其反序列化、执行函数、序列化返回值,然后将其发送回来。只有可序列化的值(字符串、数字、数组和普通对象)才能跨越这一边界。
定义服务器操作
您可以在模块级别定义服务器操作:在文件顶部添加 'use server';也可以在服务器组件内部定义内联操作:在异步函数顶部添加 'use server'。这两种方式产生的结果相同:一个只能在服务器上调用的函数。
从客户端组件调用
客户端组件导入并调用服务器操作的方式与调用普通异步函数相同。调用语法与本地异步函数调用完全一致,但执行过程完全发生在服务器上。这种抽象使客户端组件保持简洁,无需编写繁琐的获取请求样板代码。
安全模型问题
以下哪一项最准确地描述了服务器操作的安全模型?
课程回顾
服务器操作是使用 'use server' 标记的异步服务器端函数。它们可以闭包捕获数据库连接和环境机密等服务器上下文。Next.js 会自动处理 HTTP 传输,而 React 19 使其成为与框架无关的特性。表单可以通过操作属性直接使用它们,其中的密钥永远不会到达浏览器。
常见问题解答
「React 19 与 Next.js 中的服务器操作」课时是免费的吗?
是的 — 「React 19 与 Next.js 中的服务器操作」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 React Academy 课程的其余内容,请升级到 CoddyKit PRO。 React Academy 课程共包含 4 节课。
「React 19 与 Next.js 中的服务器操作」这节课中我会学到什么?
了解服务器操作如何在服务器上执行、闭包捕获服务器上下文,以及如何向客户端返回数据 你通过在浏览器中直接运行的动手代码来练习 React Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 React Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 React Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「React 19 与 Next.js 中的服务器操作」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 React Academy 课中编写并运行代码吗?
能。每节 React Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- React 19 与 Next.js 中的服务器操作
- 表单操作:用变更操作替代 API 路由
- useActionState 与 useFormStatus
- 使用服务器操作实现渐进增强