<NuxtLayout>
Nuxt는 페이지 및 오류 페이지에 레이아웃을 표시하기 위해 <NuxtLayout> 컴포넌트를 제공합니다.
<NuxtLayout />
컴포넌트를 사용하여 app.vue
또는 error.vue
에서 default
레이아웃을 활성화할 수 있습니다.
app.vue
<template>
<NuxtLayout>
some page content
</NuxtLayout>
</template>
Props
name
: 렌더링할 레이아웃 이름을 지정합니다. 문자열, 반응형 참조 또는 계산된 속성이 될 수 있습니다. 이는layouts/
디렉토리의 해당 레이아웃 파일 이름과 일치해야 합니다.- type:
string
- default:
default
- type:
pages/index.vue
<script setup lang="ts">
// layouts/custom.vue
const layout = 'custom'
</script>
<template>
<NuxtLayout :name="layout">
<NuxtPage />
</NuxtLayout>
</template>
레이아웃 이름은 케밥 케이스로 정규화되므로, 레이아웃 파일 이름이 errorLayout.vue
인 경우 <NuxtLayout />
의 name
속성으로 전달될 때 error-layout
이 됩니다.
error.vue
<template>
<NuxtLayout name="error-layout">
<NuxtPage />
</NuxtLayout>
</template>
fallback
:name
prop에 잘못된 레이아웃이 전달되면, 레이아웃이 렌더링되지 않습니다. 이 경우 렌더링할fallback
레이아웃을 지정하세요. 이는layouts/
디렉토리의 해당 레이아웃 파일 이름과 일치해야 합니다.- type:
string
- default:
null
- type:
Additional Props
NuxtLayout
은 레이아웃에 전달해야 할 추가 props도 허용합니다. 이러한 커스텀 props는 속성으로 접근할 수 있게 됩니다.
pages/some-page.vue
<template>
<div>
<NuxtLayout name="custom" title="I am a custom layout">
<-- ... -->
</NuxtLayout>
</div>
</template>
위 예제에서 title
의 값은 템플릿에서 $attrs.title
로, <script setup>
에서 useAttrs().title
로 사용할 수 있습니다.
layouts/custom.vue
const layoutCustomProps = useAttrs()
console.log(layoutCustomProps.title) // I am a custom layout
Transitions
<NuxtLayout />
는 <slot />
을 통해 들어오는 콘텐츠를 렌더링하며, 이는 Vue의 <Transition />
컴포넌트로 감싸져 레이아웃 전환을 활성화합니다. 예상대로 작동하려면 <NuxtLayout />
이 페이지 컴포넌트의 루트 요소가 아니어야 합니다.
<template>
<div>
<NuxtLayout name="custom">
<template #header> Some header template content. </template>
</NuxtLayout>
</div>
</template>
Layout's Ref
레이아웃 컴포넌트의 ref를 얻으려면 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>
※이 페이지는 Nuxt.js 공식 문서의 비공식 번역 페이지입니다.
공식 문서의 해당 페이지는 여기 있습니다:
https://nuxt.com/docs/3.x/api/components/nuxt-layout