<NuxtLayout>
Nuxt fornece o componente <NuxtLayout> para mostrar layouts em páginas e páginas de erro.
Você pode usar o componente <NuxtLayout />
para ativar o layout default
em app.vue
ou error.vue
.
<template>
<NuxtLayout>
some page content
</NuxtLayout>
</template>
Props
name
: Especifica um nome de layout a ser renderizado, pode ser uma string, referência reativa ou uma propriedade computada. Ele deve corresponder ao nome do arquivo de layout correspondente no diretóriolayouts/
.- type:
string
- default:
default
- type:
<script setup lang="ts">
// layouts/custom.vue
const layout = 'custom'
</script>
<template>
<NuxtLayout :name="layout">
<NuxtPage />
</NuxtLayout>
</template>
Observe que o nome do layout é normalizado para kebab-case, então se o seu arquivo de layout for nomeado errorLayout.vue
, ele se tornará error-layout
quando passado como uma propriedade name
para <NuxtLayout />
.
<template>
<NuxtLayout name="error-layout">
<NuxtPage />
</NuxtLayout>
</template>
fallback
: Se um layout inválido for passado para a propname
, nenhum layout será renderizado. Especifique um layoutfallback
para ser renderizado neste cenário. Ele deve corresponder ao nome do arquivo de layout correspondente no diretóriolayouts/
.- type:
string
- default:
null
- type:
Props Adicionais
NuxtLayout
também aceita quaisquer props adicionais que você precise passar para o layout. Essas props personalizadas são então acessíveis como atributos.
<template>
<div>
<NuxtLayout name="custom" title="I am a custom layout">
<-- ... -->
</NuxtLayout>
</div>
</template>
No exemplo acima, o valor de title
estará disponível usando $attrs.title
no template ou useAttrs().title
em <script setup>
em custom.vue.
const layoutCustomProps = useAttrs()
console.log(layoutCustomProps.title) // I am a custom layout
Transições
<NuxtLayout />
renderiza o conteúdo recebido via <slot />
, que é então envolvido pelo componente <Transition />
do Vue para ativar a transição do layout. Para que isso funcione como esperado, é recomendado que <NuxtLayout />
não seja o elemento raiz do componente de página.
<template>
<div>
<NuxtLayout name="custom">
<template #header> Some header template content. </template>
</NuxtLayout>
</div>
</template>
Ref do Layout
Para obter a ref de um componente de layout, acesse-a atravé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>
※Esta página é uma tradução não oficial da documentação oficial do Nuxt.js.
A página correspondente na documentação oficial está aqui:
https://nuxt.com/docs/3.x/api/components/nuxt-layout