useHydration
ハイドレーションサイクルを完全に制御し、サーバーからデータを設定および受信できるようにします。
これは、主にプラグイン内での使用を目的とした高度なコンポーザブルであり、ほとんどがNuxtモジュールで使用されます。
useHydrationは、SSR中の状態同期と復元を保証するように設計されています。NuxtでSSR対応のグローバルなリアクティブ状態を作成する必要がある場合は、useStateが推奨される選択肢です。useHydrationは、新しいHTTPリクエストが行われるたびにサーバー側でデータを設定し、そのデータをクライアント側で受信する方法を提供する組み込みのコンポーザブルです。このように、useHydrationはハイドレーションサイクルを完全に制御することを可能にします。
サーバー側のget関数から返されたデータは、useHydrationの最初のパラメータとして提供される一意のキーの下にnuxtApp.payloadに保存されます。ハイドレーション中に、このデータはクライアントで取得され、冗長な計算やAPI呼び出しを防ぎます。
使用方法
export default defineNuxtPlugin((nuxtApp) => {
const myStore = new MyStore()
if (import.meta.server) {
nuxt.hooks.hook('app:rendered', () => {
nuxtApp.payload.myStoreState = myStore.getState()
})
}
if (import.meta.client) {
nuxt.hooks.hook('app:created', () => {
myStore.setState(nuxtApp.payload.myStoreState)
})
}
})
export default defineNuxtPlugin((nuxtApp) => {
const myStore = new MyStore()
useHydration(
'myStoreState',
() => myStore.getState(),
data => myStore.setState(data),
)
})
タイプ
署名
export function useHydration<T> (key: string, get: () => T, set: (value: T) => void): void
パラメーター
key: Nuxtアプリケーション内のデータを識別する一意のキーです。get: サーバー上でのみ実行される関数(SSRレンダリングが完了したときに呼び出されます)で、初期値を設定します。set: クライアント上でのみ実行される関数(初期Vueインスタンスが作成されたときに呼び出されます)で、データを受信します。