<NuxtIsland>
Nuxtは、クライアント側のJSなしで非インタラクティブなコンポーネントをレンダリングするための<NuxtIsland>コンポーネントを提供します。
アイランドコンポーネントをレンダリングする際、アイランドコンポーネントの内容は静的であるため、クライアント側にはJSがダウンロードされません。
アイランドコンポーネントのプロップスを変更すると、アイランドコンポーネントの再レンダリングのために再フェッチがトリガーされます。
アプリケーションのグローバルスタイルはレスポンスと共に送信されます。
サーバー専用コンポーネントは内部で<NuxtIsland>
を使用します。
Props
name
: レンダリングするコンポーネントの名前。- type:
string
- required
- type:
lazy
: コンポーネントを非ブロッキングにします。- type:
boolean
- default:
false
- type:
props
: レンダリングするコンポーネントに送信するプロップス。- type:
Record<string, any>
- type:
source
: レンダリングするアイランドを呼び出すリモートソース。- type:
string
- type:
- dangerouslyLoadClientComponents: リモートソースからコンポーネントをロードするために必要です。
- type:
boolean
- default:
false
- type:
リモートアイランドには、nuxt.config
でexperimental.componentIslands
を'local+remote'
に設定する必要があります。リモートサーバーのJavaScriptを信頼できないため、dangerouslyLoadClientComponents
を有効にすることは強く推奨されません。
デフォルトでは、コンポーネントアイランドは~/components/islands/
ディレクトリからスキャンされます。そのため、~/components/islands/MyIsland.vue
コンポーネントは<NuxtIsland name="MyIsland" />
でレンダリングできます。
Slots
スロットは宣言されていればアイランドコンポーネントに渡すことができます。
すべてのスロットはインタラクティブです。なぜなら、親コンポーネントがそれを提供するからです。
いくつかのスロットは特別なケースのためにNuxtIsland
に予約されています。
#fallback
: アイランドがロードされる前(コンポーネントが遅延読み込みの場合)またはNuxtIsland
がコンポーネントのフェッチに失敗した場合にレンダリングされるコンテンツを指定します。
Ref
refresh()
- type:
() => Promise<void>
- description: サーバーコンポーネントを再フェッチして強制的に再フェッチします。
- type:
Events
error
- parameters:
- error:
- type:
unknown
- type:
- error:
- description:
NuxtIsland
が新しいアイランドのフェッチに失敗したときに発生します。
- parameters:
※このページは Nuxt.js 公式ドキュメントの翻訳ページ(非公式)です。
公式ドキュメントの該当ページはこちら:
https://nuxt.com/docs/3.x/api/components/nuxt-island