usePreviewMode
使用 usePreviewMode 來檢查和控制 Nuxt 中的預覽模式
usePreviewMode
預覽模式讓您在不向使用者公開變更的情況下,查看變更在即時網站上的顯示效果。
您可以使用內建的 usePreviewMode
composable 來存取和控制 Nuxt 中的預覽狀態。如果 composable 偵測到預覽模式,它會自動強制 useAsyncData
和 useFetch
重新渲染預覽內容所需的任何更新。
const { enabled, state } = usePreviewMode()
選項
自訂 enable
檢查
您可以指定自訂方式來啟用預覽模式。預設情況下,如果 URL 中有 preview
參數且值等於 true
(例如,https://#:3000?preview=true
),usePreviewMode
composable 將會啟用預覽模式。您可以將 usePreviewMode
包裝到自訂 composable 中,以保持跨使用方式的選項一致性並防止任何錯誤。
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()
以從伺服器重新擷取所有資料。
當預覽模式停用時,composable 會附加一個回呼,以便在後續的路由器導航後呼叫 refreshNuxtData()
執行。
您可以透過為 onEnable
和 onDisable
選項提供您自己的函數,來指定要觸發的自訂回呼。
const { enabled, state } = usePreviewMode({
onEnable: () => {
console.log('preview mode has been enabled')
},
onDisable: () => {
console.log('preview mode has been disabled')
}
})
範例
以下範例建立一個頁面,其中部分內容僅在預覽模式下呈現。
pages/some-page.vue
<script setup>
const { enabled, state } = usePreviewMode()
const { data } = await useFetch('/api/preview', {
query: {
apiKey: state.token
}
})
</script>
<template>
<div>
Some base content
<p v-if="enabled">
Only preview content: {{ state.token }}
<br>
<button @click="enabled = false">
disable preview mode
</button>
</p>
</div>
</template>
現在您可以產生您的網站並提供服務
終端機
npx nuxi generate
npx nuxi preview
然後,您可以透過將查詢參數 preview
新增到您想要查看一次的頁面結尾,來查看您的預覽頁面
?preview=true