usePreviewMode
使用 usePreviewMode 检查和控制 Nuxt 中的预览模式
usePreviewMode
预览模式允许您查看更改在实际网站上的显示效果,而不向用户公开这些更改。
您可以使用内置的 usePreviewMode
组合式来访问和控制 Nuxt 中的预览状态。如果组合式检测到预览模式,它将自动强制任何必要的更新,以重新渲染 useAsyncData
和 useFetch
的预览内容。
const { enabled, state } = usePreviewMode()
选项
自定义 enable
检查
您可以指定自定义方式来启用预览模式。默认情况下,如果 URL 中有一个 preview
参数等于 true
(例如,http://localhost:3000?preview=true
),usePreviewMode
组合式将启用预览模式。您可以将 usePreviewMode
包装到自定义组合式中,以保持使用的一致性并防止任何错误。
export function useMyPreviewMode () {
return usePreviewMode({
shouldEnable: () => {
return !!route.query.customPreview
}
});
}
修改默认状态
usePreviewMode
将尝试将 URL 中 token
参数的值存储在状态中。您可以修改此状态,它将在所有 usePreviewMode
调用中可用。
const data1 = ref('data1')
const { enabled, state } = usePreviewMode({
getState: (currentState) => {
return { data1, data2: 'data2' }
}
})
getState
函数将返回的值附加到当前状态,因此请小心不要意外覆盖重要状态。
自定义 onEnable
和 onDisable
回调
默认情况下,当 usePreviewMode
启用时,它将调用 refreshNuxtData()
以重新从服务器获取所有数据。
当预览模式被禁用时,组合式将附加一个回调,以便在后续路由导航后调用 refreshNuxtData()
。
您可以通过为 onEnable
和 onDisable
选项提供自己的函数来指定自定义回调。
const { enabled, state } = usePreviewMode({
onEnable: () => {
console.log('preview mode has been enabled')
},
onDisable: () => {
console.log('preview mode has been disabled')
}
})
示例
下面的示例创建了一个页面,其中部分内容仅在预览模式下渲染。
<script setup>
const { enabled, state } = usePreviewMode()
const { data } = await useFetch('/api/preview', {
query: {
apiKey: state.token
}
})
</script>
<template>
<div>
一些基础内容
<p v-if="enabled">
仅预览内容: {{ state.token }}
<br>
<button @click="enabled = false">
禁用预览模式
</button>
</p>
</div>
</template>
现在您可以生成您的站点并提供服务:
npx nuxt generate
npx nuxt preview
然后您可以通过在要查看的页面末尾添加查询参数 preview
来查看您的预览页面:
?preview=true
usePreviewMode
应该在本地使用 nuxt generate
然后 nuxt preview
进行测试,而不是 nuxt dev
。(preview 命令 与预览模式无关。)