目錄
什麼是插槽
作用域插槽##上面說過
具名作用域插槽
写在最后
首頁 web前端 Vue.js 什麼是插槽(slot)?聊聊Vue3中插槽的使用方法

什麼是插槽(slot)?聊聊Vue3中插槽的使用方法

Aug 23, 2022 pm 07:57 PM
vue vue3 插槽 slot

什麼是插槽(slot)?聊聊Vue3中插槽的使用方法

Vue中的插槽相信使用過Vue的小夥伴或多或少的都用過,但是你是否了解它全部用法呢?這篇文章就為大家帶來Vue3中插槽的全部用法來幫助大家查漏補缺。 (學習影片分享:vue影片教學

什麼是插槽

簡單來說就是子元件中的提供給父元件使用的一個坑位,用<slot></slot> 表示,父元件可以在這個坑位中填充任何範本程式碼然後子元件中<slot></slot>就會被替換成這些內容。例如一個最簡單插槽範例

//父组件
<template>
  <div>
    <child>Hello Juejin</child>
  </div>
</template>
<script>
import Child from &#39;./Child.vue&#39;
</script>

//子组件Child
<template>
    <div>
        <p>1</p>
        <slot></slot>
        <p>2</p>
    </div>
</template>
登入後複製

子元件中的<slot></slot> 便是父元件放在子元件標籤<child></child>之間的內容。當然這之間你可以傳入任何程式碼片段,都會被放到<slot></slot>這個位置。

什麼是插槽(slot)?聊聊Vue3中插槽的使用方法

同樣的你也可以在標籤<child></child>之間放入變量,例如

//父组件
<template>
  <div>
    <child>{{ msg }}</child>
  </div>
</template>
<script>
import { ref } from &#39;vue&#39;
import Child from &#39;./Child.vue&#39;
const msg = ref(&#39;Hello Juejin&#39;)
</script>
登入後複製

先解釋後面頻繁出現的兩個字插槽插槽內容,防止後面閱讀搞混了:

什麼是插槽(slot)?聊聊Vue3中插槽的使用方法

##同樣的

插槽表示的就是這個msg變數。所以子元件插槽是可以存取到父元件的資料作用域,而插槽內容是無法存取子元件的資料(即父元件中兩個< ;Child>之間是不能使用子元件中的資料的),這就是所謂的渲染作用域。後面會介紹插槽插槽內容傳參的方式

#預設內容

在父元件沒有提供任何

插槽內容的時候,我們是可以為子元件的插槽指定預設內容的,例如

//子组件
<template>
    <div>
        <slot>我是默认内容</slot>
    </div>
</template>

//父组件1
<template>
  <div>
    <child></child>
  </div>
</template>
<script>
import Child from &#39;./Child.vue&#39;
</script>

//父组件2
<template>
  <div>
    <child>Hello Juejin</child>
  </div>
</template>
<script>
import Child from &#39;./Child.vue&#39;
</script>
登入後複製
此時

父元件1展示預設內容

什麼是插槽(slot)?聊聊Vue3中插槽的使用方法

父元件2展示提供的內容

什麼是插槽(slot)?聊聊Vue3中插槽的使用方法

具名插槽

很多時候一個

插槽滿足不了我們的需求,我們需要多個插槽。於是就有了具名插槽,就是有名字的 插槽。簡單來說這個具名插槽的目的就是讓一個蘿蔔一個坑,讓它們留在該呆的位置去。例如有 name 的插槽 稱為具名插槽。沒有提供 name 的  會隱含地命名為「default」。在父元件中可以使用v-slot:xxx(可簡寫為#xxx) 指令的 

什麼是插槽(slot)?聊聊Vue3中插槽的使用方法

所以父元件中不需要在意順序,只需要寫好模板命好名,它就會自動去到它所對應的位置。

動態插槽名稱

動態插槽名稱就是插槽名稱變成了變數的形式,我們可以隨時修改這個變數從而展示不同的效果。它的寫法是

v-slot:[變數名]或縮寫為#[變數名]

//父组件
<template>
  <div>
    <child>
      <!-- 等同于#smallTurnip -->
      <template>
        小萝卜
      </template>
      <template>
        中萝卜
      </template>
      <template>
        大萝卜
      </template>
    </child>
  </div>
</template>
<script>
import { ref } from &#39;vue&#39;
import Child from &#39;./Child.vue&#39;
const slotName = ref(&#39;smallTurnip&#39;)
</script>
登入後複製

作用域插槽

作用域插槽##上面說過

插槽內容

是無法存取子元件的資料的,但是如果我們想在插槽內容存取子元件的狀態該怎麼辦呢? 其實

插槽

可以像對元件傳遞props 那樣,在slot標籤綁定屬性從而傳遞給父元件中的插槽內容。首先來看下預設插槽的傳值方式<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">//子组件 &lt;template&gt;     &lt;div&gt;         &lt;slot&gt;&lt;/slot&gt;     &lt;/div&gt; &lt;/template&gt; //父组件 &lt;template&gt;   &lt;div&gt;     &lt;child&gt;       My name is {{ slotProps.personName }} and I am {{ slotProps.age }} years old this year     &lt;/child&gt;   &lt;/div&gt; &lt;/template&gt; &lt;script&gt; import Child from &amp;#39;./Child.vue&amp;#39; &lt;/script&gt;</pre><div class="contentsignin">登入後複製</div></div>你也可以以結構的形式取得

slot

提供的資料<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">&lt;template&gt;   &lt;div&gt;     &lt;child&gt;       My name is {{ personName }} and I am {{ age }} years old this year     &lt;/child&gt;   &lt;/div&gt; &lt;/template&gt;</pre><div class="contentsignin">登入後複製</div></div>

注意不能绑定name属性,因为你绑定了name它就成了具名插槽了。同样具名插槽中的name属性也不会传递给插槽内容。因为传递的参数只能在插槽内容中使用,所以这类能够接受参数的插槽就被称为了作用域插槽

具名作用域插槽

下面再看下具名作用域插槽它的传参方式。它接收参数的方式是通过template标签的指令v-slot的值获取的,所以可以缩写成这样

//父组件
<template>
  <div>
    <child>
      <template>
        {{ bigTurnipProps.message }}
      </template>
    </child>
  </div>
</template>
<script>
import Child from &#39;./Child.vue&#39;
</script>

//子组件Child.vue

<template>
    <div>
        <!-- 大萝卜 -->
        <div>
            <slot></slot>
        </div>
    </div>
</template>
登入後複製

什麼是插槽(slot)?聊聊Vue3中插槽的使用方法

这类插槽便是具名作用域插槽

写在最后

到这里插槽(slot)的全部用法基本就已经介绍完啦。如果感觉对你有用的话赶紧点赞收藏吧!

(学习视频分享:web前端开发编程基础视频

以上是什麼是插槽(slot)?聊聊Vue3中插槽的使用方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1663
14
CakePHP 教程
1420
52
Laravel 教程
1315
25
PHP教程
1266
29
C# 教程
1239
24
vue中怎麼用bootstrap vue中怎麼用bootstrap Apr 07, 2025 pm 11:33 PM

在 Vue.js 中使用 Bootstrap 分為五個步驟:安裝 Bootstrap。在 main.js 中導入 Bootstrap。直接在模板中使用 Bootstrap 組件。可選:自定義樣式。可選:使用插件。

vue怎麼給按鈕添加函數 vue怎麼給按鈕添加函數 Apr 08, 2025 am 08:51 AM

可以通過以下步驟為 Vue 按鈕添加函數:將 HTML 模板中的按鈕綁定到一個方法。在 Vue 實例中定義該方法並編寫函數邏輯。

vue中的watch怎麼用 vue中的watch怎麼用 Apr 07, 2025 pm 11:36 PM

Vue.js 中的 watch 選項允許開發者監聽特定數據的變化。當數據發生變化時,watch 會觸發一個回調函數,用於執行更新視圖或其他任務。其配置選項包括 immediate,用於指定是否立即執行回調,以及 deep,用於指定是否遞歸監聽對像或數組的更改。

vue多頁面開發是啥意思 vue多頁面開發是啥意思 Apr 07, 2025 pm 11:57 PM

Vue 多頁面開發是一種使用 Vue.js 框架構建應用程序的方法,其中應用程序被劃分為獨立的頁面:代碼維護性:將應用程序拆分為多個頁面可以使代碼更易於管理和維護。模塊化:每個頁面都可以作為獨立的模塊,便於重用和替換。路由簡單:頁面之間的導航可以通過簡單的路由配置來管理。 SEO 優化:每個頁面都有自己的 URL,這有助於搜索引擎優化。

React與Vue:Netflix使用哪個框架? React與Vue:Netflix使用哪個框架? Apr 14, 2025 am 12:19 AM

NetflixusesAcustomFrameworkcalled“ Gibbon” BuiltonReact,notReactorVuedIrectly.1)TeamSperience:selectBasedonFamiliarity.2)ProjectComplexity:vueforsimplerprojects:reactforforforproproject,reactforforforcompleplexones.3)cocatizationneedneeds:reactoffipicatizationneedneedneedneedneedneeds:reactoffersizationneedneedneedneedneeds:reactoffersizatization needefersmoreflexibleise.4)

vue返回上一頁的方法 vue返回上一頁的方法 Apr 07, 2025 pm 11:30 PM

Vue.js 返回上一頁有四種方法:$router.go(-1)$router.back()使用 &lt;router-link to=&quot;/&quot;&gt; 組件window.history.back(),方法選擇取決於場景。

vue.js怎麼引用js文件 vue.js怎麼引用js文件 Apr 07, 2025 pm 11:27 PM

在 Vue.js 中引用 JS 文件的方法有三種:直接使用 &lt;script&gt; 標籤指定路徑;利用 mounted() 生命週期鉤子動態導入;通過 Vuex 狀態管理庫進行導入。

vue遍歷怎麼用 vue遍歷怎麼用 Apr 07, 2025 pm 11:48 PM

Vue.js 遍歷數組和對像有三種常見方法:v-for 指令用於遍歷每個元素並渲染模板;v-bind 指令可與 v-for 一起使用,為每個元素動態設置屬性值;.map 方法可將數組元素轉換為新數組。

See all articles