slots
부모component에서 자식의 템플릿 content를 렌더링해주는 것
slots
기본
자식Component
<div>
<slot name="header"></slot>
</div>
<div>
<slot></slot>
</div>
<div>
<slot name="content"></slot>
</div>
<div>
<slot name="footer2">footer2입니다</slot>
</div>
footer2는 상위 컴포넌트에서 정의하지않는다면 footer2입니다
라는 기본 메세지가 뜬다
부모Component
<template v-slot:header>제목</template>
<template v-slot>안녕</template>
<!--<template v-slot:default>안녕</template>-->
<template #content>Content</template>
동적 슬롯 이름
자식 Component
<div>
<slot name="footer">footer입니다</slot>
</div>
부모Component
const slotValue = ref('footer');
...
<template #[slotValue]>slotValue입니다</template>
rendor Scope
자식컴포넌트의 데이터를 slot에 이용하려는 경우
자식 Component
const greetingMessage = ref('Hello World!')
<div>
<slot name="slotProps" :text="greetingMessage" :count="1"></slot>
</div>
부모 Component
<template #slotProps="obj">
{{obj.text}}, {{obj.count}}
</template>
slot이 지정되지않으면 없애기
$slots
자식 Component
<div v-if="$slots.footer3" >
<slot name="footer3">부모에서 정의내리지않으면 이 div객체는 생성되지않는다</slot>
</div>
응용
FancyList.vue(자식 Component)
<script setup>
import { ref } from 'vue'
const items = ref([])
// 모의 원격 데이터 가져오기
setTimeout(() => {
items.value = [
{ body: '범위가 지정된 슬롯 가이드', username: '신형만', likes: 20 },
{ body: 'Vue 튜토리얼', username: '나미리', likes: 10 }
]
}, 1000)
</script>
<template>
<ul>
<li v-if="!items.length">
로딩...
</li>
<li v-for="item in items">
<slot name="item" v-bind="item" v-bind:count="1"/>
</li>
</ul>
</template>
App.vue(부모 Component)
<template>
<FancyList :api-url="url" :per-page="10">
<template #item="{ body, username, likes, count }">
<div class="item">
<p>{{ body }}</p>
<p class="meta">by {{ username }} | {{ likes }} likes</p>
<p>
{{ count }}
</p>
</div>
</template>
</FancyList>
</template>

참고자료:
Javascript
👉 pinia기본
2023.05.05
👉 github pages에서 vue router 404 에러
2023.04.03
👉 object의 변수인 경우 ref와 reactive 어느 것을 사용할까
2023.04.02
👉 Route
2023.04.01
👉 Template ref
2023.03.26
👉 provide와 inject
2023.03.25
👉 slots
2023.03.24
👉 nonProps
2023.03.23
👉 v-model을 통한 3depth 양방향 바인딩
2023.03.22
👉 emit, component와 v-model을 통한 양방향 바인딩
2023.03.21
👉 props
2023.03.20
👉 watch
2023.03.19
👉 양방향 바인딩
2023.03.18
👉 event Parameter
2023.03.17
👉 Scope와 Closure
2023.03.17
👉 classStyleBinding
2023.03.16
👉 computed
2023.03.15
👉 Ref와 Reactive
2023.03.14
👉 notion page를 웹사이트에 삽입하기
2022.01.25
👉 Json
2021.04.16
👉 Javascript 배열
2021.04.15
👉 Javascript 객체
2021.04.14
👉 Javascript 클래스
2021.04.13
👉 Javascript 함수
2021.04.12
👉 Javascript 변수심화
2021.04.11
👉 Javascript 변수
2021.04.10
Frontend
👉 pinia기본
2023.05.05
👉 github pages에서 vue router 404 에러
2023.04.03
👉 object의 변수인 경우 ref와 reactive 어느 것을 사용할까
2023.04.02
👉 Route
2023.04.01
👉 Template ref
2023.03.26
👉 provide와 inject
2023.03.25
👉 slots
2023.03.24
👉 nonProps
2023.03.23
👉 v-model을 통한 3depth 양방향 바인딩
2023.03.22
👉 emit, component와 v-model을 통한 양방향 바인딩
2023.03.21
👉 props
2023.03.20
👉 watch
2023.03.19
👉 양방향 바인딩
2023.03.18
👉 event Parameter
2023.03.17
👉 Scope와 Closure
2023.03.17
👉 classStyleBinding
2023.03.16
👉 computed
2023.03.15
👉 Ref와 Reactive
2023.03.14
👉 notion page를 웹사이트에 삽입하기
2022.01.25
👉 간단한 반응형 메뉴갖는 웹 만들기
2021.08.04
👉 Json
2021.04.16
👉 Javascript 배열
2021.04.15
👉 Javascript 객체
2021.04.14
👉 Javascript 클래스
2021.04.13
👉 Javascript 함수
2021.04.12
👉 Javascript 변수심화
2021.04.11
👉 Javascript 변수
2021.04.10
👉 CSS Centering
2021.04.09
👉 CSS flexbox
2021.04.08
👉 CSS 변수
2021.04.07
👉 CSS Size
2021.04.06
👉 CSS layout
2021.04.05
👉 CSS 기본
2021.04.04
👉 HTML5 Data 속성
2021.04.03
👉 HTML의 다양한 태그
2021.04.02
👉 Visual studio code의 유용한 툴
2021.04.01
👉 HTML 기초
2021.04.01
Vue
👉 pinia기본
2023.05.05
👉 github pages에서 vue router 404 에러
2023.04.03
👉 object의 변수인 경우 ref와 reactive 어느 것을 사용할까
2023.04.02
👉 Route
2023.04.01
👉 Template ref
2023.03.26
👉 provide와 inject
2023.03.25
👉 slots
2023.03.24
👉 nonProps
2023.03.23
👉 v-model을 통한 3depth 양방향 바인딩
2023.03.22
👉 emit, component와 v-model을 통한 양방향 바인딩
2023.03.21
👉 props
2023.03.20
👉 watch
2023.03.19
👉 양방향 바인딩
2023.03.18
👉 event Parameter
2023.03.17
👉 classStyleBinding
2023.03.16
👉 computed
2023.03.15
👉 Ref와 Reactive
2023.03.14
댓글 쓰기