setPageLayout

源文件
setPageLayout 允许您动态更改页面的布局。
setPageLayout 允许您动态更改页面的布局。它依赖于对 Nuxt context 的访问,因此只能在 Nuxt context 中调用。
app/middleware/custom-layout.ts
export default defineNuxtRouteMiddleware((to) => {
  // Set the layout on the route you are navigating _to_
  setPageLayout('other')
})

向布局传递 Props

您可以通过提供一个对象作为第二个参数来向布局传递 props

app/middleware/admin-layout.ts
export default defineNuxtRouteMiddleware((to) => {
  setPageLayout('admin', {
    sidebar: true,
    title: 'Dashboard',
  })
})

布局随后可以接收这些 props

app/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 渲染布局之前(即在插件或路由中间件中)进行设置,以避免水合不匹配。