react 19 的服务器函数:在服务器端执行客户端引用的函数
本文介绍 React 19 中服务器函数的概念和使用方法。服务器函数是在客户端代码中引用,但在服务器端执行的函数。这简化了客户端与服务器端交互的流程。
以下是一个示例:
'use client' import { useactionstate } from "react"; import { updatename } from "@/app/react-19-server-function/actions"; export default function page() { const [error, submitaction, ispending] = useactionstate( async (_previousstate, formdata) => { const error = await updatename(formdata.get("name") as string); if (error) { return error; } return ""; }, "", ); return ( <div> <h1>React 19: Server Functions</h1> <fieldset> <div>Name</div> <form action={submitaction}> <input name="name" type="text" /> <button disabled={ispending} type="submit">Save</button> </form> <div> {error && <p>{error}</p>} </div> </fieldset> </div> ); }
请注意 updatename 函数的导入方式:
import { updatename } from "@/app/react-19-server-function/actions";
updatename 函数在服务器端执行,其代码如下:
"use server"; export async function updateName(name) { if (name?.length < 2) { return "Name must be at least 2 characters long"; } return ""; }
use server 指令告诉 React 该函数将在服务器端执行。 该函数检查名称长度,少于两个字符则返回错误信息。
用户界面非常简洁,如下图所示:
提交表单时,会发送 POST 请求,其内容类型为 text/x-component。 即使有效负载为空,也会自动传递。响应格式类似 json。
链接:
- 代码库 (链接需补充)
结论:
服务器函数简化了客户端与服务器的交互。通过 use server 指令,开发者无需手动处理 fetch 请求、状态码和有效负载解析等细节,React 框架会自动处理这些过程。 这使得构建更简洁高效的应用程序成为可能。