Skip to content

RouterView 슬롯

RouterView 컴포넌트는 라우트 컴포넌트를 렌더링하는 데 사용할 수 있는 슬롯을 노출합니다:

template
<router-view v-slot="{ Component }">
  <component :is="Component" />
</router-view>

위 코드는 슬롯 없이 <router-view />를 사용하는 것과 같지만, 다른 기능과 함께 사용하려면 슬롯이 추가적인 유연성을 제공합니다.

KeepAlive 및 Transition

KeepAlive 컴포넌트를 사용할 때는 보통 RouterView 자체가 아니라 라우트 컴포넌트를 살아 있게 유지하고 싶습니다. 이는 KeepAlive를 슬롯 안에 두어 구현할 수 있습니다:

template
<router-view v-slot="{ Component }">
  <keep-alive>
    <component :is="Component" />
  </keep-alive>
</router-view>

마찬가지로 슬롯을 사용하면 Transition 컴포넌트를 사용해 라우트 컴포넌트 사이에 전환 효과를 적용할 수 있습니다:

template
<router-view v-slot="{ Component }">
  <transition>
    <component :is="Component" />
  </transition>
</router-view>

Transition 안에 KeepAlive를 넣어 사용할 수도 있습니다:

template
<router-view v-slot="{ Component }">
  <transition>
    <keep-alive>
      <component :is="Component" />
    </keep-alive>
  </transition>
</router-view>

RouterView와 Transition 컴포넌트를 함께 사용하는 자세한 방법은 Transitions 가이드를 참고하세요.

props와 슬롯 전달하기

슬롯을 사용해 라우트 컴포넌트에 props나 슬롯을 전달할 수 있습니다:

template
<router-view v-slot="{ Component }">
  <component :is="Component" some-prop="a value">
    <p>Some slotted content</p>
  </component>
</router-view>

실제로는 라우트 컴포넌트가 모두 같은 props와 슬롯을 사용해야 하므로 이런 방식을 원하지 않는 경우가 많습니다. props를 전달하는 다른 방법은 라우트 컴포넌트에 Props 전달하기를 참고하세요.

템플릿 ref

슬롯을 사용하면 template ref를 라우트 컴포넌트에 직접 둘 수 있습니다:

template
<router-view v-slot="{ Component }">
  <component :is="Component" ref="mainContent" />
</router-view>

대신 ref를 <router-view>에 두면, ref에는 라우트 컴포넌트가 아니라 RouterView 인스턴스가 채워집니다.

모두를 위한 문서 한글화