選單
×
   ❮   
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

Vue 教程

Vue 首頁 Vue Intro Vue Directives Vue v-bind Vue v-if Vue v-show Vue v-for Vue Events Vue v-on Vue Methods Vue Event Modifiers Vue Forms Vue v-model Vue CSS Binding Vue Computed Properties Vue Watchers Vue Templates

Scaling Up

Vue 為什麼、如何以及設定 Vue 第一個 SFC 頁面 Vue 元件 Vue Props Vue v-for 元件 Vue $emit() Vue Fallthrough Attributes Vue Scoped Styling Vue 本地元件 Vue Slots Vue v-slot Vue Scoped Slots Vue 動態元件 Vue Teleport Vue HTTP 請求 Vue Template Refs Vue Lifecycle Hooks Vue Provide/Inject Vue Routing Vue Form Inputs Vue Animations Vue Animations with v-for Vue Build Vue Composition API

Vue Reference

Vue Built-in Attributes Vue Built-in Components Vue Built-in Elements Vue Component Instance Vue Directives Vue Instance Options Vue Lifecycle Hooks

Vue 示例

Vue Examples Vue Exercises Vue Quiz Vue Server Vue Certificate

Vue 插槽

插槽是 Vue 中一個強大的功能,它允許更靈活和可重用的元件。

我們使用 Vue 中的插槽將父元件的內容傳送到子元件的 <template> 中。

插槽

到目前為止,我們只在 <template> 中將元件用作自閉合標籤,例如:

App.vue:

<template>
  <slot-comp />
</template>

相反,我們可以使用開閉標籤,並在其中放置一些內容,例如一段文字:

App.vue:

<template>
  <slot-comp>Hello World!</slot-comp>
</template>

但要接收 'Hello World!' 並將其顯示在我們的頁面上,我們需要在元件中使用 <slot> 標籤。<slot> 標籤充當內容的佔位符,因此在應用程式構建後,<slot> 將被髮送給它的內容替換。

示例

SlotComp.vue:

<template>
  <div>  
    <p>SlotComp.vue</p>
    <slot></slot>
  </div>
</template>
執行示例 »

插槽作為卡片

插槽也可用於包裝大塊的動態 HTML 內容,以獲得卡片式外觀。

之前我們透過 props 傳送資料來建立元件內部的內容,現在我們可以直接將 HTML 內容作為內容傳送到 <slot> 標籤中。

示例

App.vue:

<template>
  <h3>Slots in Vue</h3>  
  <p>We create card-like div boxes from the foods array.</p>
  <div id="wrapper">
    <slot-comp v-for="x in foods">
      <img v-bind:src="x.url">
      <h4>{{x.name}}</h4>
      <p>{{x.desc}}</p>
    </slot-comp>
  </div>
</template>

當內容進入帶有 <slot> 的元件時,我們在 <slot> 周圍使用 div 並本地化樣式化 <div>,以在內容周圍建立卡片式外觀,而不會影響我們應用程式中的其他 div。

SlotComp.vue:

<template>
  <div> <!-- This div makes the card-like appearance -->
    <slot></slot>
  </div>
</template>

<script></script>

<style scoped>
  div {
    box-shadow: 0 4px 8px 0 rgba(0,0,0,0.2);
    border-radius: 10px;
    margin: 10px;
  }
</style>
執行示例 »

可以重用生成卡片式框架內容的元件來建立不同的元素,但它們都帶有相同的卡片式框架。

在這個例子中,我們使用與食物項相同的元件來建立一個頁尾。

示例

App.vue:

<template>
  <h3>Reusable Slot Cards</h3>
  <p>We create card-like div boxes from the foods array.</p>
  <p>We also create a card-like footer by reusing the same component.</p>
  <div id="wrapper">
    <slot-comp v-for="x in foods">
      <img v-bind:src="x.url">
      <h4>{{x.name}}</h4>
    </slot-comp>
  </div>
  <footer>
    <slot-comp>
      <h4>Footer</h4>
    </slot-comp>
  </footer>
</template>
執行示例 »

備用內容

如果沒有為元件提供內容,我們可以在 <slot> 中設定備用內容。

示例

此應用程式中的第一個元件沒有提供內容,因此會渲染備用內容。

App.vue:

<template>
  <h3>Slots Fallback Content</h3>
  <p>A component without content provided can have fallback content in the slot tag.</p>
  <slot-comp>
    <!-- Empty -->
  </slot-comp>
  <slot-comp>
    <h4>This content is provided from App.vue</h4>
  </slot-comp>
</template>

SlotComp.vue:

<template>
  <div>
    <slot>
      <h4>This is fallback content</h4>
    </slot>
  </div>
</template>
執行示例 »

Vue 練習

透過練習來測試自己

練習

當元件的開始標籤和結束標籤之間提供了文字,例如:

<comp-one>Hello World!</comp-one>

提供的文字可以使用插槽在元件中接收,如下所示:

<template>
  <div>  
    <p>CompOne.vue</p>
    
  </div>
</template>

開始練習



×

聯絡銷售

如果您想將 W3Schools 服務用於教育機構、團隊或企業,請傳送電子郵件給我們
sales@w3schools.com

報告錯誤

如果您想報告錯誤,或想提出建議,請傳送電子郵件給我們
help@w3schools.com

W3Schools 經過最佳化,旨在方便學習和培訓。示例可能經過簡化,以提高閱讀和學習體驗。教程、參考資料和示例會不斷審查,以避免錯誤,但我們無法保證所有內容的完全正確性。使用 W3Schools 即表示您已閱讀並接受我們的使用條款Cookie 和隱私政策

版權所有 1999-2024 Refsnes Data。保留所有權利。W3Schools 由 W3.CSS 提供支援