101. Sidebar: Slot Properties
npm create vue@latest
์ฌ์ด๋๋ฐ ํ์ต
- ์ฌ์ด๋๋ฐ ํ์ต์ ํ์์ ์ด์ง ์์ผ๋ฉฐ ์ธ์ ๋ ์ง ๋ณต์ตํ ์ ์์
- ์ฌ๋กฏ ํ๋กํผํฐ์ ๋ํ ์ถ๊ฐ ์ ๋ณด ์ ๊ณต
์ฌ๋กฏ ํ๋กํผํฐ ๊ฐ๋ ์๊ฐ
- ๋ค์ ๊ฐ์์์ ๋ง๋ ์ฌ๋กฏ ํ๋กํผํฐ์ ๋ํ ์ฌ์ ์ค๋ช
- ๋ณ๋์ ํ๋ก์ ํธ๋ก ์ฌ๋กฏ ํ๋กํผํฐ ์์ ์งํ
ํ๋ก์ ํธ ์ค์
- ์ ๊ณต๋ zip ํ์ผ์ ๋ค์ด๋ก๋ํ๊ณ ํจํค์ง ์ค์น ํ ์๋ฒ ์์
- ๊ธฐ๋ณธ ์ค์ ์ผ๋ก ์์ฑ๋ ํ๋ก์ ํธ์ ์์ ๋ ๋ ํ์ผ(
App
๊ณผHelloWorld
์ปดํฌ๋ํธ) ์ฌ์ฉ
App ์ปดํฌ๋ํธ
HelloWorld
์ปดํฌ๋ํธ๋ฅผ ๊ฐ์ ธ์ค๊ณ ๋ฑ๋ก- ํฌํ๋ฆฟ ๋ธ๋ก์์
HelloWorld
์ปดํฌ๋ํธ์ ์ฌ๋กฏ ์ถ๊ฐ ์์
HelloWorld
์ปดํฌ๋ํธ- ์คํฌ๋ฆฝํธ ๋ธ๋ก์
user
๋ฐfavorites
๋ฐ์ดํฐ ์์ฑ ์ ์ - ์ฌ๋กฏ์ ์ถ๊ฐํ์ฌ ์ฝํ ์ธ ์ฝ์ ๊ฐ๋ฅํ๋๋ก ๋ณ๊ฒฝ ์์
- ์คํฌ๋ฆฝํธ ๋ธ๋ก์
์ฌ๋กฏ ํ๋กํผํฐ ๋ฐ์ธ๋ฉ
HelloWorld
์ปดํฌ๋ํธ์user
ํ๋กํผํฐ๋ฅผ ์ฌ๋กฏ ์ปดํฌ๋ํธ์ ๋ฐ์ธ๋ฉ- ๋ถ๋ชจ ์ค์ฝํ์ธ
App
์ปดํฌ๋ํธ์์ ์ฌ์ฉ ๊ฐ๋ฅํ๊ฒ ํจ
๋์ ๋ฉ์์ง ๊ตฌํ
App
์ปดํฌ๋ํธ์์HelloWorld
์ปดํฌ๋ํธ์ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ํ์ฉํ์ฌ ๋ฉ์์ง ์ ๋ฐ์ดํธv-slot
์ง์๋ฌธ ์ฌ์ฉํ์ฌuser
๋ฐ์ดํฐ๋ฅผ ํ ํ๋ฆฟ์ ์ ์ฉ
์ฌ๋กฏ ํ๋กํผํฐ์ ์๋ก์ด ๋ฌธ๋ฒ
- ๋ฒ์ 2.6 ์ด์์์ ์ฌ์ฉ ๊ฐ๋ฅํ
slot
์ง์๋ฌธ - ์ฌ๋กฏ ํ๋กํผํฐ ์ฌ์ฉ์ ๋จ์ํํ๋ ์๋ก์ด ๋ฌธ๋ฒ ์ ๊ณต
- ๋ฒ์ 2.6 ์ด์์์ ์ฌ์ฉ ๊ฐ๋ฅํ
์ถ๊ฐ ๊ธฐ๋ฅ๊ณผ ์ฐ์ต
HelloWorld
์ปดํฌ๋ํธ์์favorites
๋ฐ์ดํฐ ํ๋กํผํฐ๋ฅผ ์ฌ๋กฏ์ ๋ฐ์ธ๋ฉํ๋ ์ฐ์ตApp
์ปดํฌ๋ํธ์์favorites
๋ฐ์ดํฐ ์ฌ์ฉํ์ฌ ๋ฉ์์ง ์ ๋ฐ์ดํธ
App.vue
<script setup>
import HelloWorld from "./components/HelloWorld.vue";
</script>
<template>
<div id="app">
<HelloWorld #default="{ user, favorites }">
<p>Hello {{ user.name }}. I like {{ favorites[0] }}</p>
</HelloWorld>
</div>
</template>
HelloWorld.vue
<script setup>
import {ref} from 'vue'
const user = ref({
name: 'John',
age: 25,
})
const favorites = ref(['Pizza', 'Marbles', 'Birds'])
</script>
<template>
<div>
<slot :user="user" :favorites="favorites"></slot>
</div>
</template>