setPageLayout
Функция setPageLayout позволяет динамически менять лейаут страницы.
setPageLayout позволяет динамически изменять лейаут страницы. Функция зависит от доступа к контексту Nuxt и поэтому может быть вызвана только в пределах Nuxt-контекста.middleware/custom-layout.ts
export default defineNuxtRouteMiddleware((to) => {
// Установите лейаут на маршрут, по которому вы _перемещаетесь_.
setPageLayout('other')
})
Передача пропсов в лейаут
Пропсы можно передать вторым аргументом — объектом:
middleware/admin-layout.ts
export default defineNuxtRouteMiddleware((to) => {
setPageLayout('admin', {
sidebar: true,
title: 'Dashboard',
})
})
Лейаут принимает их через defineProps:
layouts/admin.vue
<script setup lang="ts">
const props = defineProps<{
sidebar?: boolean
title?: string
}>()
</script>
<template>
<div>
<aside v-if="sidebar">
Sidebar
</aside>
<main>
<h1>{{ title }}</h1>
<slot />
</main>
</div>
</template>
Если вы задаёте лейаут динамически на сервере, сделайте это до отрисовки лейаута Vue (в плагине или middleware маршрута), иначе возможен сбой гидратации.