nuxt logo

Traducción de Documentación (No Oficial)

<NuxtLayout>

Nuxt proporciona el componente <NuxtLayout> para mostrar diseños en páginas y páginas de error.

Puedes usar el componente <NuxtLayout /> para activar el diseño default en app.vue o error.vue.

app.vue
<template>
  <NuxtLayout>
    some page content
  </NuxtLayout>
</template>
Ver también guide > directory-structure > layouts

Props

  • name: Especifica un nombre de diseño para ser renderizado, puede ser una cadena, una referencia reactiva o una propiedad computada. Debe coincidir con el nombre del archivo de diseño correspondiente en el directorio layouts/.
    • type: string
    • default: default
pages/index.vue
<script setup lang="ts">
// layouts/custom.vue
const layout = 'custom'
</script>

<template>
  <NuxtLayout :name="layout">
    <NuxtPage />
  </NuxtLayout>
</template>

Ten en cuenta que el nombre del diseño se normaliza a kebab-case, por lo que si tu archivo de diseño se llama errorLayout.vue, se convertirá en error-layout cuando se pase como propiedad name a <NuxtLayout />.

error.vue
<template>
  <NuxtLayout name="error-layout">
    <NuxtPage />
  </NuxtLayout>
</template>
Ver también guide > directory-structure > layouts
  • fallback: Si se pasa un diseño no válido a la propiedad name, no se renderizará ningún diseño. Especifica un diseño fallback para ser renderizado en este escenario. Debe coincidir con el nombre del archivo de diseño correspondiente en el directorio layouts/.
    • type: string
    • default: null

Props Adicionales

NuxtLayout también acepta cualquier prop adicional que necesites pasar al diseño. Estos props personalizados se hacen accesibles como atributos.

pages/some-page.vue
<template>
  <div>
    <NuxtLayout name="custom" title="I am a custom layout">
      <-- ... -->
    </NuxtLayout>
  </div>
</template>

En el ejemplo anterior, el valor de title estará disponible usando $attrs.title en el template o useAttrs().title en <script setup> en custom.vue.

layouts/custom.vue
const layoutCustomProps = useAttrs()

console.log(layoutCustomProps.title) // I am a custom layout

Transiciones

<NuxtLayout /> renderiza contenido entrante a través de <slot />, que luego se envuelve alrededor del componente <Transition /> de Vue para activar la transición del diseño. Para que esto funcione como se espera, se recomienda que <NuxtLayout /> no sea el elemento raíz del componente de la página.

<template>
  <div>
    <NuxtLayout name="custom">
      <template #header> Some header template content. </template>
    </NuxtLayout>
  </div>
</template>
Ver también getting-started > transitions

Ref del Diseño

Para obtener la referencia de un componente de diseño, accede a través de ref.value.layoutRef.

<script setup lang="ts">
const layout = ref()

function logFoo () {
  layout.value.layoutRef.foo()
}
</script>

<template>
  <NuxtLayout ref="layout">
    default layout
  </NuxtLayout>
</template>
Ver también guide > directory-structure > layouts