2023-08-02 07:31:22 +00:00
|
|
|
---
|
|
|
|
title: "<NuxtIsland>"
|
2023-11-18 20:24:13 +00:00
|
|
|
description: "Nuxt provides the <NuxtIsland> component to render a non-interactive component without any client JS."
|
2023-10-18 10:59:43 +00:00
|
|
|
links:
|
|
|
|
- label: Source
|
|
|
|
icon: i-simple-icons-github
|
|
|
|
to: https://github.com/nuxt/nuxt/blob/main/packages/nuxt/src/app/components/nuxt-island.ts
|
|
|
|
size: xs
|
2023-08-02 07:31:22 +00:00
|
|
|
---
|
|
|
|
|
|
|
|
When rendering an island component, the content of the island component is static, thus no JS is downloaded client-side.
|
2023-10-18 10:59:43 +00:00
|
|
|
|
2023-08-02 07:31:22 +00:00
|
|
|
Changing the island component props triggers a refetch of the island component to re-render it again.
|
|
|
|
|
2024-02-21 17:09:45 +00:00
|
|
|
::note
|
2023-10-18 10:59:43 +00:00
|
|
|
Global styles of your application are sent with the response.
|
2023-08-02 07:31:22 +00:00
|
|
|
::
|
|
|
|
|
2024-02-21 17:09:45 +00:00
|
|
|
::tip
|
2023-08-02 07:31:22 +00:00
|
|
|
Server only components use `<NuxtIsland>` under the hood
|
|
|
|
::
|
|
|
|
|
|
|
|
## Props
|
|
|
|
|
2023-10-18 10:59:43 +00:00
|
|
|
- `name` : Name of the component to render.
|
2023-08-02 07:31:22 +00:00
|
|
|
- **type**: `string`
|
|
|
|
- **required**
|
2023-10-18 10:59:43 +00:00
|
|
|
- `lazy`: Make the component non-blocking.
|
2023-08-02 07:31:22 +00:00
|
|
|
- **type**: `boolean`
|
|
|
|
- **default**: `false`
|
2023-10-18 10:59:43 +00:00
|
|
|
- `props`: Props to send to the component to render.
|
2023-08-02 07:31:22 +00:00
|
|
|
- **type**: `Record<string, any>`
|
2023-10-18 10:59:43 +00:00
|
|
|
- `source`: Remote source to call the island to render.
|
2023-08-02 07:31:22 +00:00
|
|
|
- **type**: `string`
|
2023-12-19 12:21:29 +00:00
|
|
|
- **dangerouslyLoadClientComponents**: Required to load components from a remote source.
|
|
|
|
- **type**: `boolean`
|
|
|
|
- **default**: `false`
|
2023-08-02 07:31:22 +00:00
|
|
|
|
2024-02-21 17:09:45 +00:00
|
|
|
::note
|
2023-09-12 06:29:44 +00:00
|
|
|
Remote islands need `experimental.componentIslands` to be `'local+remote'` in your `nuxt.config`.
|
2023-12-19 12:21:29 +00:00
|
|
|
It is strongly discouraged to enable `dangerouslyLoadClientComponents` as you can't trust a remote server's javascript.
|
2023-08-02 07:31:22 +00:00
|
|
|
::
|
|
|
|
|
2023-10-18 10:59:43 +00:00
|
|
|
## Slots
|
2023-08-02 07:31:22 +00:00
|
|
|
|
|
|
|
Slots can be passed to an island component if declared.
|
|
|
|
|
|
|
|
Every slot is interactive since the parent component is the one providing it.
|
|
|
|
|
|
|
|
Some slots are reserved to `NuxtIsland` for special cases.
|
|
|
|
|
2023-10-18 10:59:43 +00:00
|
|
|
- `#fallback`: Specify the content to be rendered before the island loads (if the component is lazy) or if `NuxtIsland` fails to fetch the component.
|
2023-12-14 11:07:54 +00:00
|
|
|
|
|
|
|
## Ref
|
|
|
|
|
|
|
|
- `refresh()`
|
|
|
|
- **type**: `() => Promise<void>`
|
|
|
|
- **description**: force refetch the server component by refetching it.
|
2024-03-06 16:45:43 +00:00
|
|
|
|
|
|
|
## Events
|
|
|
|
|
|
|
|
- `error`
|
|
|
|
- **parameters**:
|
|
|
|
- **error**:
|
|
|
|
- **type**: `unknown`
|
|
|
|
- **description**: emitted when when `NuxtIsland` fails to fetch the new island.
|