通过 100+ 技巧学习 Nuxt!

<NuxtIsland>

Nuxt 提供了 <NuxtIsland> 组件来渲染一个非交互式组件,而无需任何客户端 JS。

当渲染一个 Island 组件时,该 Island 组件的内容是静态的,因此不会在客户端下载 JS。

更改 Island 组件的 props 会触发重新获取 Island 组件,以再次重新渲染它。

应用程序的全局样式会随响应一起发送。
仅服务器组件在底层使用 <NuxtIsland>

属性

  • name : 要渲染的组件的名称。
    • 类型: string
    • 必需
  • lazy: 使组件变为非阻塞式。
    • 类型: boolean
    • 默认值: false
  • props: 要发送给要渲染的组件的 Props。
    • 类型: Record<string, any>
  • source: 调用 Island 进行渲染的远程来源。
    • 类型: string
  • dangerouslyLoadClientComponents: 从远程来源加载组件时必需。
    • 类型: boolean
    • 默认值: false
远程 Island 需要将 nuxt.config 中的 experimental.componentIslands 设置为 'local+remote'。强烈建议不要启用 dangerouslyLoadClientComponents,因为您无法信任远程服务器的 javascript。
默认情况下,组件 Island 从 ~/components/islands/ 目录扫描。因此,~/components/islands/MyIsland.vue 组件可以使用 <NuxtIsland name="MyIsland" /> 渲染。

插槽

如果声明了插槽,则可以将其传递给 Island 组件。

每个插槽都是交互式的,因为父组件是提供它的组件。

某些插槽为特殊情况保留给 NuxtIsland

  • #fallback: 指定在 Island 加载之前(如果组件是 lazy)或在 NuxtIsland 无法获取组件时要渲染的内容。

引用

  • refresh()
    • 类型: () => Promise<void>
    • 描述: 通过重新获取强制重新获取服务器组件。

事件

  • error
    • 参数:
      • error:
        • 类型: unknown
    • 描述: 当 NuxtIsland 无法获取新的 Island 时发出。