推荐答案
在 Next.js 中,预览模式(Preview Mode)允许你在不发布内容的情况下预览草稿或未发布的内容。通常用于与无头 CMS(如 Contentful、Sanity 等)集成时,预览未发布的内容。
以下是使用预览模式的步骤:
启用预览模式: 在你的 API 路由中创建一个端点来启用预览模式。例如,创建一个
api/preview.js
文件:export default function handler(req, res) { res.setPreviewData({}); res.redirect(req.query.redirect || '/'); }
这个端点会通过
res.setPreviewData()
启用预览模式,并将用户重定向到指定的页面。在页面中检查预览模式: 在页面组件中,使用
getStaticProps
或getServerSideProps
来检查预览模式,并根据预览模式获取不同的数据。-- -------------------- ---- ------- ------ ----- -------- ----------------------- - -- ----------------- - -- ------ ----- ---- - ----- ------------------- ------ - ------ - ---- -- -- - -- ------ ----- ---- - ----- ------------------ ------ - ------ - ---- -- -- -
退出预览模式: 创建一个 API 路由来退出预览模式。例如,创建一个
api/exit-preview.js
文件:export default function handler(req, res) { res.clearPreviewData(); res.redirect('/'); }
这个端点会通过
res.clearPreviewData()
退出预览模式,并将用户重定向到首页。
本题详细解读
1. 预览模式的作用
预览模式允许开发者在 Next.js 应用中预览未发布的内容,通常用于与无头 CMS 集成时。通过预览模式,开发者可以在不发布内容的情况下查看内容的变化。
2. 启用预览模式
启用预览模式的关键是调用 res.setPreviewData()
方法。这个方法会在用户的浏览器中设置一个 cookie,标记当前会话处于预览模式。你可以通过传递一个对象给 res.setPreviewData()
来存储一些自定义数据,这些数据可以在页面组件中通过 context.previewData
访问。
3. 检查预览模式
在页面组件中,你可以通过 getStaticProps
或 getServerSideProps
的 context
参数来检查当前是否处于预览模式。如果 context.preview
为 true
,则表示当前处于预览模式,你可以根据这个状态获取不同的数据。
4. 退出预览模式
退出预览模式的关键是调用 res.clearPreviewData()
方法。这个方法会清除之前设置的预览模式 cookie,从而退出预览模式。通常,退出预览模式后,用户会被重定向到首页或其他指定页面。
5. 实际应用场景
预览模式通常用于以下场景:
- 与无头 CMS 集成时,预览未发布的内容。
- 在开发环境中预览生产环境的内容。
- 在发布前预览内容的最终效果。
通过预览模式,开发者可以更灵活地管理和预览内容,确保在发布前内容的质量和准确性。