\n\n\n```\n\n**자식컴포넌트**\n\n```\n\n\n\n```\n\n---\n\n**참고**\n\n[슬롯참고](https://ko.vuejs.org/guide/components/slots#fallback-content)\n\n[실제예제](https://play.vuejs.org/#eNqVVNFqE0EU/ZXrKFShSZT2KcaClj7oQxXrm+vDZneSbru7s+zMxpRSqJiCNEhTMLRKWlKoVqFgKREq6g91Z//BO7vZTdLaqG8799w5c+bcM7tK7ntevhZQUiQlbviWJ4BTEXgzmms5HvMFzOq+CRWfOTCRL6iFap/QXIO5XIC54uqOZSzYTMzrDr2nkQpjgvoa0dxSIWFELlwI6ni2LiiuAEqKKP7C7xSB64tUN6nfryOyODUT7RyGb9/J/Y2w+SZsHpYKWOvvKwxRXqIyaUUPbHX2gEv++BxttORZ9//pnl+46ItRkdtnUePkr6xq2b/4SJ1MEsHRz4pVzS9x5uIwVlW3RgzmeJZN/ceesNBvjRQhRhSm2zZ7+SiuCT+gk2ndWKTG8h/qS7yuahp54lNO/RrVSIYJ3a9SkcBzC/O0jt8Z6DAzsLF7DPiUcmYHSmPS9iBwTZQ91BerfRhHynKrz/hcXVCXp5dSQlXnWtyvEYzY7JirD+RO5afjfZq7hi6m8VRpHvXdtGpg2DrnmFADuzSSDkghtZxVQeAGx+nyfJJCjYxsyKXVbPBJAeTmcXjwVe71QB705P5x1O7C+ekv+eEEou2ObHbC1pckFpBFRp0DmCf1XrLTCllkUJKKyLVcDiCXGxY6oggTgx6iDYMsxsTZEiBq98Lm91TjTgtkuxEe985PX4dbDVCB7X4MW7vyaB2RTdnelZvf+mJvVnBkZd1YvpWxFxT9BZXxQK4QmP4KMkHh1nvZfSU7P8ODDqBl4aeG3EMdR+uy247aHUh2DCz9JwfTYy45OOTl6OMucbFiJ8nIK6VpssrMx1kU4Y5XBwy0ZULZRgfuJqinmyZmtwi34wJmLiPopyPjwU1Vn+EjwCHZDBn58krZDuhFpmmvfpmrP9eUbHxzcvmrDy5TqzruWBxq7AVZ+w3JtTZc)\n","publisher":{"@type":"Organization","name":"WallyLog"}}
vuejs

조건부 slot / 동적 slot / 대체 컨텐츠를 사용한 slot

실제예제

조건부 slot

v-if="$slots.슬롯명"을 사용해서 slot을 조건부로 표시할수있다 (예제의 1번 참고)

동적 slot

변수에 슬롯명을 할당한후 동적으로 slot을 표시할수있다( 예제의 3번 참고 )

#[변수명]
v-slot:[변수명]

등으로 사용가능하다

대체 컨텐츠를 사용한 slot

해당 slot이 사용되지 않을 경우 대체 컨텐츠(fallback:대비책)이 표시된다 ( 예제의 2번 참고 )

대체표시컨텐츠


부모템플릿

<script setup>
import Card from './Card.vue'
const dynamicSlotName="footer"
</script>

<template>
  <Card>
    <template #header> <!-- 1.조건부 slot예제 -->
      <h3>헤더입니다</h3>
    </template>

    <template #default> <!-- 2.대체 컨텐츠를 사용한 slot예제 -->
      <h3>컨텐츠입니다</h3>
    </template>

    <template #[dynamicSlotName]> <!-- 3.동적 slot예제 -->
      <h3>푸터입니다</h3>
    </template>
  </Card>
</template>

자식컴포넌트

<template>
  <div class="card">
    <div v-if="$slots.header" class="card-header">
      header 슬롯이 존재할 경우 표시됩니다 
      <slot name="header" />
    </div>

    <div class="card-content">
      <slot >
        해당 슬롯에 아무것도 입력되지 않았습니다 (fallback)
      </slot>
    </div>
    
    <div class="card-footer">
      동적으로 이름을 지정한 footer슬롯이 표시됩니다 
      <slot name="footer" />
    </div>
  </div>
</template>

<style>
  .card {
    border: 1px solid black;
    padding: 0;
  }
  .card-header {
    background-color: skyblue;
    padding: 4px;
  }
  .card-content {
    padding: 4px;
  }
  .card-footer {
    background-color: beige;
    padding: 4px;
  }
</style>

참고

슬롯참고

실제예제