<NuxtPage>

<NuxtPage>는 Nuxt와 함께 제공되는 빌트인 컴포넌트이다. pages/ 디렉토리에 있는 최상위 페이지 또는 중첩 페이지를 표시할 수 있다 

<NuxtPage>는 Vue Router의 <RouterView> 컴포넌트를 감싼 래퍼이다. 동일한 name 과 route 속성을 갖는다.

 

Props

  • name : 일치하는 경로 레코드의 컴포넌트 옵션에 해당 이름으로 컴포넌를 렌더링하도록 RouterView 에게 지시한다.
    • type : string
  • route : 모든 컴포넌트가 위치할 경로 위치
    • type : RouteLocationNormalized
  • pageKey : NuxtPage 컴포넌트가 다시 렌더링되는 시기를 제어한다.
    • type : string 또는 function
  • transition : NuxtPage 컴포넌트로 렌더링된 모든 페이지에 대한 전역 트랜지션을 정의한다.
    • type : boolean 또는 TransitionProps
  • keepalive : NuxtPage 컴포넌트로 렌더링된 페이지의 상태 보존을 제어한다.
    • type : boolean 또는 KeepAliveProps
Nuxt는 /pages 디렉토리에 있는 모든 Vue 컴포넌트 파일을 스캔하고 렌더링하여 자동으로 name 및 route를 리졸브한다.

 

사용 예

예를 들어 static키를 전달하면 NuxtPage 컴포넌트가 마운트될 때 한 번만 렌더링다.

<!--
app.vue
-->

<template>
  <NuxtPage page-key="static" />
</template>

현재 경로를 기반으로 동적 키를 사용할 수도 있다.

<NuxtPage :page-key="route => route.fullPath" />

주의) <Suspense> 를 사용한 <NuxtPage> 에서는 $route 객체를 사용하지 말자. 문제를 발생시킬지 모른다.

 

또는 /pages 디렉토리의 Vue 컴포넌트 <script>섹션 definePageMeta 을 통해 pageKey 값(key) 으로 전달할 수 있다.

// pages/my-page.vue

<script setup lang="ts">
definePageMeta({
  key: route => route.fullPath
})
</script>

참고) Docs > Examples > Routing > Pages

 

Page's Ref

ref 페이지 컴포넌트를 얻으려면 ref.value.pageRef 을 통해 액세스한다.

<!--
app.vue
-->

<script setup lang="ts">
const page = ref()

function logFoo () {
  page.value.pageRef.foo()
}
</script>

<template>
  <NuxtPage ref="page" />
</template>

 

Custom Props

<NuxtPage> 는 계층 구조를 더 아래로 전달해야 할 수 있는 사용자 정의 props 도 허용한다.
이러한 맞춤 props은 Nuxt 앱 attrs 을 통해 액세스할 수 있다.

<NuxtPage :foobar="123" />

예를 들어, 위 예에서 foobar 값은 <script setup> 안 템플릿 혹은 useAttrs().foobar 에서 $attrs.foobar 를 통하여 얻을 수 있다.

'Nuxt 공식문서 번역 > Components' 카테고리의 다른 글

<NuxtLoadingIndicator>  (0) 2023.12.12
<NuxtLink>  (1) 2023.12.11
<NuxtLayout>  (0) 2023.12.11
<NuxtClientFallback>  (0) 2023.12.11
<ClientOnly>  (0) 2023.12.11
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유