zyuan8591 / aaron-vue-web

https://aaron-vue-web.vercel.app
2 stars 0 forks source link

11. Slot #11

Open zyuan8591 opened 1 year ago

zyuan8591 commented 1 year ago
<button class="fancy-btn">
  <slot></slot>
</button>
image

named slot

<div class="container">
  <header>
    <slot name="header"></slot>
  </header>
  <main>
    <slot></slot>
  </main>
  <footer>
    <slot name="footer"></slot>
  </footer>
</div>

v-slot:header 可簡寫為 #header

<BaseLayout>
  <template v-slot:header>
    <!-- header 插槽的内容放这里 -->
  </template>
</BaseLayout>
image

dynamic slot

<base-layout>
  <template v-slot:[dynamicSlotName]>
    ...
  </template>
</base-layout>

default slot pass props

<MyComponent v-slot="{ text, count }">
  {{ text }} {{ count }}
</MyComponent>

named slot pass props

<FancyList :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>
</FancyList>