nuxt logo

ドキュメント翻訳(非公式)

onPrehydrate

onPrehydrate を使用して、Nuxt がページをハイドレートする直前にクライアントでコールバックを実行します。

このコンポーザブルは Nuxt v3.12+ で利用可能です。

onPrehydrate は、Nuxt がページをハイドレートする直前にクライアントでコールバックを実行できるコンポーザブルライフサイクルフックです。

これは高度なユーティリティであり、注意して使用する必要があります。例えば、nuxt-time@nuxtjs/color-mode は、ハイドレーションの不一致を避けるために DOM を操作します。

使用法

onPrehydrate を Vue コンポーネントのセットアップ関数(例: <script setup> 内)やプラグインで呼び出します。これはサーバーで呼び出されたときにのみ効果があり、クライアントビルドには含まれません。

Signature
export function onPrehydrate(callback: (el: HTMLElement) => void): void
export function onPrehydrate(callback: string | ((el: HTMLElement) => void), key?: string): undefined | string

パラメータ

パラメータ必須説明
callback((el: HTMLElement) => void) | stringはいNuxt がハイドレートする前に実行する関数(または文字列化された関数)。HTML に文字列化されてインライン化されます。外部依存関係やコールバック外の変数を参照してはいけません。Nuxt ランタイムが初期化される前に実行されるため、Nuxt や Vue のコンテキストに依存してはいけません。
keystringいいえ(高度な)プレハイドレートスクリプトを識別するための一意のキー。複数のルートノードのような高度なシナリオで役立ちます。

戻り値

  • コールバック関数のみで呼び出された場合は undefined を返します。
  • コールバックとキーで呼び出された場合は文字列(プレハイドレート ID)を返し、高度な使用例で data-prehydrate-id 属性を設定またはアクセスするために使用できます。

app.vue
<script setup lang="ts">
declare const window: Window
// ---cut---
// Nuxt がハイドレートする前にコードを実行
onPrehydrate(() => {
  console.log(window)
})

// ルート要素にアクセス
onPrehydrate((el) => {
  console.log(el.outerHTML)
  // <div data-v-inspector="app.vue:15:3" data-prehydrate-id=":b3qlvSiBeH:"> Hi there </div>
})

// 高度な使用法: 自分で `data-prehydrate-id` にアクセス/設定
const prehydrateId = onPrehydrate((el) => {})
</script>

<template>
  <div>
    Hi there
  </div>
</template>