draftMode 是一个异步函数,允许您启用和禁用 草稿模式,以及检查 服务端组件 中草稿模式是否启用。
import { draftMode } from "next/headers";
export default async function Page() {
const { isEnabled } = await draftMode();
}import { draftMode } from "next/headers";
export default async function Page() {
const { isEnabled } = await draftMode();
}以下方法和属性可用:
| 方法 | 描述 |
|---|---|
isEnabled | 一个布尔值,表示草稿模式是否启用。 |
enable() | 通过设置一个 cookie (__prerender_bypass) 在路由处理程序中启用草稿模式。 |
disable() | 通过删除一个 cookie 在路由处理程序中禁用草稿模式。 |
draftMode 是一个异步函数,它返回一个 Promise。您必须使用 async/await 或者 React 的 use 函数。
draftMode 是一个同步函数。为了帮助向后兼容,您仍然可以在 Next.js 15 中同步访问它,但此行为将在未来被废弃。next build 时,都会生成一个新的绕过 cookie 值。这确保了绕过 cookie 无法被猜测。要启用草稿模式,请创建一个新的 路由处理程序 并调用 enable() 方法:
import { draftMode } from "next/headers";
export async function GET(request: Request) {
const draft = await draftMode();
draft.enable();
return new Response("Draft mode is enabled");
}import { draftMode } from "next/headers";
export async function GET(request) {
const draft = await draftMode();
draft.enable();
return new Response("Draft mode is enabled");
}默认情况下,草稿模式会话会在浏览器关闭时结束。
要手动禁用草稿模式,请在您的 路由处理程序 中调用 disable() 方法:
import { draftMode } from "next/headers";
export async function GET(request: Request) {
const draft = await draftMode();
draft.disable();
return new Response("Draft mode is disabled");
}import { draftMode } from "next/headers";
export async function GET(request) {
const draft = await draftMode();
draft.disable();
return new Response("Draft mode is disabled");
}然后,发送请求以调用路由处理程序。如果使用 <Link> 组件 调用路由,您必须传入 prefetch={false} 以防止在预取时意外删除 cookie。
您可以使用 isEnabled 属性在服务端组件中检查草稿模式是否启用:
import { draftMode } from "next/headers";
export default async function Page() {
const { isEnabled } = await draftMode();
return (
<main>
<h1>My Blog Post</h1>
<p>Draft Mode is currently {isEnabled ? "Enabled" : "Disabled"}</p>
</main>
);
}import { draftMode } from "next/headers";
export default async function Page() {
const { isEnabled } = await draftMode();
return (
<main>
<h1>My Blog Post</h1>
<p>Draft Mode is currently {isEnabled ? "Enabled" : "Disabled"}</p>
</main>
);
}| 版本 | 变更 |
|---|---|
v15.0.0-RC | draftMode 现在是一个异步函数。提供了一个 codemod。 |
v13.4.0 | 引入 draftMode。 |