Vue中插槽的理解

2021-10-05 05:19:37 字數 2833 閱讀 6972

插槽,也就是slot,在vue中的作用相當於乙個模板,通過父元件裡的這個模板,就能決定子元件裡使用這個模板的時候,顯不顯示,顯示什麼,怎麼顯示。

首先來個簡單的例子:

合成元件:

>

>

yangp

>

child

>

child裡的模板:

>

>

hellop

>

>

slot

>

div>

顯示的效果:

插槽裡可以包含任何模板**,包括html,其他元件

在插槽中,我們可以提供後備內容,也就是預設值。它只會在沒有提供內容時被渲染,如果提供內容,就會取代後備內容。

>

>

hellop

>

>

worldslot

>

div>

假如我們在父元件裡的模板沒有提供內容:

>

child

>

那麼顯示效果就為:

在我們需要多個插槽時,我們就不能使用上面的匿名插槽了,這時,我們可以給插槽起名字,用於區分不同的插槽,在vue2.6.0之後,使用了新的語法。

我們可以在乙個元素上使用v-slot,並以v-slot的引數形式提供其名稱:

>

v-slot:header

>

class

="header"

>

headerdiv

>

template

>

v-slot:footer

>

class

="footer"

>

footerdiv

>

template

>

body-content

>

在子元件中,我們可以通過name

這個屬性,定義的名字:

>

name

="header"

>

slot

>

class

='content'

>

contentdiv

>

name

="footer"

>

slot

>

div>

顯示的效果就是:

注意v-slot只能新增在(只有一種例外情況),這一點和已經廢棄的slotattribute 不同。
v-bind也有縮寫,縮寫就是把引數之前的所有內容(v-slot:)換成字元#。例如v-slot:header就可以寫成#header

>

#header

>

class

="header"

>

headerdiv

>

template

>

#footer

>

class

="footer"

>

footerdiv

>

template

>

body-content

>

因為父級模板裡的所有內容都是在父級作用域中編譯的;子模板裡的所有內容都是在子作用域中編譯的,所以我們如果有時要讓插槽內容訪問到子元件中才有的資料的話,就要用到作用域插槽。

我們可以在子元件中,把你想要傳遞的資料作為元素的乙個屬性繫結上去。裡的模板:

>

:user

="user"

>

}slot

>

span

>

被繫結在元素上的屬性被稱為插槽prop。在父元件中,我們就可以通過帶值的v-slot來定義我們提供的插槽 prop 的名字:

>

v-slot:default

="slotprops"

>

}template

>

current-user

>

這樣我們就能在父元件中訪問到子元件才有的資料了。

Vue中對於插槽的理解

第一種是匿名插槽 匿名插槽的使用方法比較簡單粗暴,直接在子元件中進行使用,然後運用到template模板當中 doctype html en utf 8 viewport content width device width,initial scale 1.0 document title head...

vue中的插槽slot理解

本篇文章參考賽冷思的個人部落格 1.函式預設傳參 在我們寫js函式我們的可能會給他們乙個預設的引數,寫法是 function show age,name show 20,張三 show 18,命名 18,明明 如果使用者不傳入引數,那麼會輸出預設值,如果使用者傳入,會輸出傳入的值,這種寫法很靈活 v...

理解Vue插槽

在vue開發中,我們多採用元件化開發。元件化開發最大特點就是對頁面結構化劃分,元件的復用。而在實際中,頁面對元件的需求或許也稍有不同,那麼就需要一種需求 為頁面定製元件,解決的方式便是通過插槽。例項 執行上面 結果 描述 頁面使用多個自定義元件 樣式 略 序號為方便敘述新增的且每個序號指向乙個自定義...