"use server"
编辑此页面"use server"
将启用仅在服务器端运行的函数。
注意: "use server"
函数必须标记为 async 或至少返回一个 promise。
基本用法
当使用 "use server"
时,无论服务器渲染是否启用,它所应用的函数都只会在服务器端运行。
为了实现这一点,编译过程会将 "use server"
函数转换为对服务器的 RPC 调用。
如果 "use server"
作为文件的第一行插入,整个文件将变成仅服务器端。
然而,如果 "use server"
作为函数的第一行插入,则只有该函数会是仅服务器端:
在这两个例子中,logHello
函数无论是在服务器还是浏览器中渲染,都只会在服务器控制台中显示。
与数据 API 一起使用
服务器函数可以用于获取数据和在服务器上执行操作。 以下示例展示了如何将服务器函数与 solid-router 的数据 API 一起使用。
当在客户端调用 getUser
或 updateUser
时,将向服务器发出 http 请求,调用相应的服务器函数。
单次执行操作
在上面的例子中,当调用 updateUser
操作时,会在服务器端抛出重定向。
Solid Start 可以在服务器端处理这个重定向,而不是将其传播到客户端。
重定向页面的数据会在与 updateUser
操作相同的 http 请求中获取并流式传输到客户端,而不是需要客户端为重定向页面发起单独的 http 请求。
序列化
服务器函数允许在响应中序列化许多不同的数据类型,使用 Seroval 序列化器。 完整列表可在 Seroval 的源代码 中查看。
元信息
要获取稳定的函数特定标识符(即使在并行进程或多个 CPU 核心或工作进程中),请使用 getServerFunctionMeta