<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>