redirect
编辑此页面重定向到下一个路由。
当通过服务器 RPC(远程过程调用)执行时,重定向将通过服务器完成。
默认情况下,redirect()
的状态码是 302 - FOUND
,也称为临时重定向。
其他有用的重定向状态码:
状态码 | 描述 |
---|---|
301 | 永久移动 |
307 | 临时重定向 |
308 | 永久重定向 |
tip:
307 和 308 不允许浏览器改变请求的方法。如果你想改变请求方法,应该使用 301 或 302。
抛出重定向的一个常见用例是当用户未经身份验证需要被发送到登录页面或其他公共路由时。
单次执行的变更操作
当在服务器操作(Server Action)中使用 redirect
时,重定向将通过服务器完成。
响应值将自动发送目标路由的数据,避免后续再次请求加载目标路由的数据。
这在将用户重定向到变更操作完成后的不同路由时非常有用。
addUser
操作将在用户被添加到数据库后将用户重定向到 /users
路由。
表单操作的响应将发送更新后的 /users
路由数据,开发者无需手动重新验证或重新加载。
Throw vs Return
throw
和 return
都可以用来将用户重定向到不同的路由。
对于一般用途,推荐使用 throw
,因为它会立即停止当前操作的执行并重定向用户。
当从嵌套方法返回时,父方法将继续执行,这可能导致意外行为。
TypeScript 签名
ResponseOptions
扩展了原生 ResponseInit
接口的类型。