101. Sidebar: Slot Properties

npm create vue@latest


  1. ์‚ฌ์ด๋“œ๋ฐ” ํ•™์Šต

    • ์‚ฌ์ด๋“œ๋ฐ” ํ•™์Šต์€ ํ•„์ˆ˜์ ์ด์ง€ ์•Š์œผ๋ฉฐ ์–ธ์ œ๋“ ์ง€ ๋ณต์Šตํ•  ์ˆ˜ ์žˆ์Œ
    • ์Šฌ๋กฏ ํ”„๋กœํผํ‹ฐ์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์ •๋ณด ์ œ๊ณต
  2. ์Šฌ๋กฏ ํ”„๋กœํผํ‹ฐ ๊ฐœ๋… ์†Œ๊ฐœ

    • ๋‹ค์Œ ๊ฐ•์˜์—์„œ ๋งŒ๋‚  ์Šฌ๋กฏ ํ”„๋กœํผํ‹ฐ์— ๋Œ€ํ•œ ์‚ฌ์ „ ์„ค๋ช…
    • ๋ณ„๋„์˜ ํ”„๋กœ์ ํŠธ๋กœ ์Šฌ๋กฏ ํ”„๋กœํผํ‹ฐ ์ž‘์—… ์ง„ํ–‰
  3. ํ”„๋กœ์ ํŠธ ์„ค์ •

    • ์ œ๊ณต๋œ zip ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ํŒจํ‚ค์ง€ ์„ค์น˜ ํ›„ ์„œ๋ฒ„ ์‹œ์ž‘
    • ๊ธฐ๋ณธ ์„ค์ •์œผ๋กœ ์ƒ์„ฑ๋œ ํ”„๋กœ์ ํŠธ์™€ ์ˆ˜์ •๋œ ๋‘ ํŒŒ์ผ(App๊ณผ HelloWorld ์ปดํฌ๋„ŒํŠธ) ์‚ฌ์šฉ
  4. App ์ปดํฌ๋„ŒํŠธ

    • HelloWorld ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  ๋“ฑ๋ก
    • ํƒฌํ”Œ๋ฆฟ ๋ธ”๋ก์—์„œ HelloWorld ์ปดํฌ๋„ŒํŠธ์— ์Šฌ๋กฏ ์ถ”๊ฐ€ ์˜ˆ์ •
  5. HelloWorld ์ปดํฌ๋„ŒํŠธ

    • ์Šคํฌ๋ฆฝํŠธ ๋ธ”๋ก์— user ๋ฐ favorites ๋ฐ์ดํ„ฐ ์†์„ฑ ์ •์˜
    • ์Šฌ๋กฏ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์ฝ˜ํ…์ธ  ์‚ฝ์ž… ๊ฐ€๋Šฅํ•˜๋„๋ก ๋ณ€๊ฒฝ ์˜ˆ์ •

  1. ์Šฌ๋กฏ ํ”„๋กœํผํ‹ฐ ๋ฐ”์ธ๋”ฉ

    • HelloWorld ์ปดํฌ๋„ŒํŠธ์— user ํ”„๋กœํผํ‹ฐ๋ฅผ ์Šฌ๋กฏ ์ปดํฌ๋„ŒํŠธ์— ๋ฐ”์ธ๋”ฉ
    • ๋ถ€๋ชจ ์Šค์ฝ”ํ”„์ธ App ์ปดํฌ๋„ŒํŠธ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•จ
  2. ๋™์  ๋ฉ”์‹œ์ง€ ๊ตฌํ˜„

    • App ์ปดํฌ๋„ŒํŠธ์—์„œ HelloWorld ์ปดํฌ๋„ŒํŠธ์˜ ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ฉ”์‹œ์ง€ ์—…๋ฐ์ดํŠธ
    • v-slot ์ง€์‹œ๋ฌธ ์‚ฌ์šฉํ•˜์—ฌ user ๋ฐ์ดํ„ฐ๋ฅผ ํ…œํ”Œ๋ฆฟ์— ์ ์šฉ
  3. ์Šฌ๋กฏ ํ”„๋กœํผํ‹ฐ์˜ ์ƒˆ๋กœ์šด ๋ฌธ๋ฒ•

    • ๋ฒ„์ „ 2.6 ์ด์ƒ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ slot ์ง€์‹œ๋ฌธ
    • ์Šฌ๋กฏ ํ”„๋กœํผํ‹ฐ ์‚ฌ์šฉ์„ ๋‹จ์ˆœํ™”ํ•˜๋Š” ์ƒˆ๋กœ์šด ๋ฌธ๋ฒ• ์ œ๊ณต
  4. ์ถ”๊ฐ€ ๊ธฐ๋Šฅ๊ณผ ์—ฐ์Šต

    • 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>