<NuxtLayout>
Вы можете использовать компонент <NuxtLayout />, чтобы активировать лейаут default в app.vue или error.vue.
<template>
<NuxtLayout>
некоторое содержимое страницы
</NuxtLayout>
</template>
Входные параметры
name: Укажите имя лейаута, который будет отображаться, это может быть строка, реактивная ссылка или вычисляемое свойство. Оно должно совпадать с именем соответствующего файла лейаута в директорииlayouts/.- тип:
string - по умолчанию:
default
- тип:
<script setup lang="ts">
// layouts/custom.vue
const layout = 'custom'
</script>
<template>
<NuxtLayout :name="layout">
<NuxtPage />
</NuxtLayout>
</template>
errorLayout.vue, он станет error-layout при передаче в качестве свойства name в <NuxtLayout />.<template>
<NuxtLayout name="error-layout">
<NuxtPage />
</NuxtLayout>
</template>
fallback: Если во входной параметрnameпередан недействительный лейаут, то он не будет отрендерен. Укажите лейаутfallback, который будет отображаться в таком случае. Он должен совпадать с именем соответствующего файла лейаута в директорииlayouts/.- тип:
string - по умолчанию:
null
- тип:
Дополнительные входные параметры
NuxtLayout также принимает любые дополнительные входные параметры, которые могут потребоваться для передачи в лейаут. Затем эти пользовательские входные параметры доступны в виде атрибутов.
<template>
<div>
<NuxtLayout name="custom" title="Я - пользовательский лейаут">
<-- ... -->
</NuxtLayout>
</div>
</template>
В приведенном выше примере значение title будет доступно с помощью $attrs.title в template или useAttrs().title в <script setup> в custom.vue.
<script setup lang="ts">
const layoutCustomProps = useAttrs()
console.log(layoutCustomProps.title) // Я - пользовательский лейаут
</script>
Transitions
<NuxtLayout /> рендерит входящий контент через <slot />, который затем оборачивается вокруг компонента Vue <Transition />, чтобы активировать переход лейаута. Чтобы это работало должным образом, рекомендуется, чтобы <NuxtLayout /> не был корневым элементом компонента страницы.
<template>
<div>
<NuxtLayout name="custom">
<template #header> Некоторое содержимое шаблона хедера. </template>
</NuxtLayout>
</div>
</template>
Ссылка на лейаут
Чтобы получить ссылку на компонент лейаута, используйте ref.value.layoutRef.
<script setup lang="ts">
const layout = ref()
function logFoo () {
layout.value.layoutRef.foo()
}
</script>
<template>
<NuxtLayout ref="layout">
лейаут по умолчанию
</NuxtLayout>
</template>