nuxt logo

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

Nuxt.js
Version:v3.17

<NuxtIsland>

Nuxtは、クライアント側のJSなしで非インタラクティブなコンポーネントをレンダリングするための<NuxtIsland>コンポーネントを提供します。

アイランドコンポーネントをレンダリングする際、アイランドコンポーネントの内容は静的であるため、クライアント側にはJSがダウンロードされません。

アイランドコンポーネントのプロップスを変更すると、アイランドコンポーネントの再レンダリングのために再フェッチがトリガーされます。

アプリケーションのグローバルスタイルはレスポンスと共に送信されます。

サーバー専用コンポーネントは内部で<NuxtIsland>を使用します。

Props

  • name : レンダリングするコンポーネントの名前。
    • type: string
    • required
  • lazy: コンポーネントを非ブロッキングにします。
    • type: boolean
    • default: false
  • props: レンダリングするコンポーネントに送信するプロップス。
    • type: Record<string, any>
  • source: レンダリングするアイランドを呼び出すリモートソース。
    • type: string
  • dangerouslyLoadClientComponents: リモートソースからコンポーネントをロードするために必要です。
    • type: boolean
    • default: false

リモートアイランドには、nuxt.configexperimental.componentIslands'local+remote'に設定する必要があります。リモートサーバーのJavaScriptを信頼できないため、dangerouslyLoadClientComponentsを有効にすることは強く推奨されません。

デフォルトでは、コンポーネントアイランドは~/components/islands/ディレクトリからスキャンされます。そのため、~/components/islands/MyIsland.vueコンポーネントは<NuxtIsland name="MyIsland" />でレンダリングできます。

Slots

スロットは宣言されていればアイランドコンポーネントに渡すことができます。

すべてのスロットはインタラクティブです。なぜなら、親コンポーネントがそれを提供するからです。

いくつかのスロットは特別なケースのためにNuxtIslandに予約されています。

  • #fallback: アイランドがロードされる前(コンポーネントが遅延読み込みの場合)またはNuxtIslandがコンポーネントのフェッチに失敗した場合にレンダリングされるコンテンツを指定します。

Ref

  • refresh()
    • type: () => Promise<void>
    • description: サーバーコンポーネントを再フェッチして強制的に再フェッチします。

Events

  • error
    • parameters:
      • error:
        • type: unknown
    • description: NuxtIslandが新しいアイランドのフェッチに失敗したときに発生します。