usePreviewMode
usePreviewMode
プレビューモードでは、変更がライブサイトにどのように表示されるかを、ユーザーに公開することなく確認できます。
組み込みのusePreviewMode
コンポーザブルを使用すると、Nuxtでプレビューステータスにアクセスして制御できます。コンポーザブルがプレビューモードを検出すると、useAsyncData
およびuseFetch
がプレビューコンテンツを再レンダリングするために必要な更新を自動的に強制します。
const { enabled, state } = usePreviewMode()
オプション
カスタムenable
チェック
プレビューモードを有効にするカスタム方法を指定できます。デフォルトでは、usePreviewMode
コンポーザブルは、URLにpreview
パラメータがあり、それがtrue
と等しい場合(例:https://127.0.0.1:3000?preview=true
)、プレビューモードを有効にします。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>
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
usePreviewMode
は、nuxi dev
ではなく、nuxi generate
を実行してからnuxi preview
を実行してローカルでテストする必要があります。(previewコマンドはプレビューモードとは関係ありません。)