Next.js 如何使用预览模式 (Preview Mode)?

推荐答案

在 Next.js 中,预览模式(Preview Mode)允许你在不发布内容的情况下预览草稿或未发布的内容。通常用于与无头 CMS(如 Contentful、Sanity 等)集成时,预览未发布的内容。

以下是使用预览模式的步骤:

  1. 启用预览模式: 在你的 API 路由中创建一个端点来启用预览模式。例如,创建一个 api/preview.js 文件:

    这个端点会通过 res.setPreviewData() 启用预览模式,并将用户重定向到指定的页面。

  2. 在页面中检查预览模式: 在页面组件中,使用 getStaticPropsgetServerSideProps 来检查预览模式,并根据预览模式获取不同的数据。

    -- -------------------- ---- -------
    ------ ----- -------- ----------------------- -
      -- ----------------- -
        -- ------
        ----- ---- - ----- -------------------
        ------ -
          ------ - ---- --
        --
      -
    
      -- ------
      ----- ---- - ----- ------------------
      ------ -
        ------ - ---- --
      --
    -
  3. 退出预览模式: 创建一个 API 路由来退出预览模式。例如,创建一个 api/exit-preview.js 文件:

    这个端点会通过 res.clearPreviewData() 退出预览模式,并将用户重定向到首页。

本题详细解读

1. 预览模式的作用

预览模式允许开发者在 Next.js 应用中预览未发布的内容,通常用于与无头 CMS 集成时。通过预览模式,开发者可以在不发布内容的情况下查看内容的变化。

2. 启用预览模式

启用预览模式的关键是调用 res.setPreviewData() 方法。这个方法会在用户的浏览器中设置一个 cookie,标记当前会话处于预览模式。你可以通过传递一个对象给 res.setPreviewData() 来存储一些自定义数据,这些数据可以在页面组件中通过 context.previewData 访问。

3. 检查预览模式

在页面组件中,你可以通过 getStaticPropsgetServerSidePropscontext 参数来检查当前是否处于预览模式。如果 context.previewtrue,则表示当前处于预览模式,你可以根据这个状态获取不同的数据。

4. 退出预览模式

退出预览模式的关键是调用 res.clearPreviewData() 方法。这个方法会清除之前设置的预览模式 cookie,从而退出预览模式。通常,退出预览模式后,用户会被重定向到首页或其他指定页面。

5. 实际应用场景

预览模式通常用于以下场景:

  • 与无头 CMS 集成时,预览未发布的内容。
  • 在开发环境中预览生产环境的内容。
  • 在发布前预览内容的最终效果。

通过预览模式,开发者可以更灵活地管理和预览内容,确保在发布前内容的质量和准确性。

纠错
反馈