아래와 같은 상황에 사용가능하다
- (부모템플릿 ← 자식컴포넌트1 ← 자식컴포넌트2)와 같은 경우에 사용가능하다
- 부모템플릿에서 자식컴포넌트1에서 자식컴포넌트2로 매개변수를 전달하는걸 관리가능하다
예제1
- 기본예제
* 부모템플릿
<자식컴포넌트>
<template #default="slotProps"> // v-slot="slotProps"
{{ slotProps}} // { "index": '1', "test": "aaa"}
</template>
</자식컴포넌트>
* 자식컴포넌트
let i = '1'
<div>
<slot :index="i" test="aaa" />
</div>
예제2
- 이름이 있는 슬롯사용
- 구조분해할당사용
* 부모템플릿
<자식컴포넌트>
<template #header="headerProps"> // slot name="header"의 props가 전달된다
{{ slotProps}} // { "index": '1', "test": "aaa"}
</template>
<template #default="{index,test}"> // 구조분해할당형식으로 표현가능
{{ index }} // '1'
</template>
<p>{{ message }}</p>
</자식컴포넌트>
* 자식컴포넌트
let i = '1'
<div>
<slot name="header" message="안녕"></slot>
<slot :index="i" test="aaa" />
</div>
실제사용예제3
- 부모 템플릿에서 자식컴포넌트의 props값 item을 관리할수있다
* 부모템플릿
<자식컴포넌트 :api-url="url" :per-page="10">
<template #item="{ body, username, likes }">
<div class="item">
<p>{{ body }}</p>
<p>by {{ username }} | {{ likes }} likes</p>
</div>
</template>
</자식컴포넌트>
* 자식컴포넌트
<ul>
<li v-for="item in items">
<slot name="item" v-bind="item"></slot>
</li>
</ul>
참고
May 18, 2024
Views 81