插槽,也就是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只能新增在v-bind也有縮寫,縮寫就是把引數之前的所有內容(上(只有一種例外情況),這一點和已經廢棄的
slot
attribute 不同。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開發中,我們多採用元件化開發。元件化開發最大特點就是對頁面結構化劃分,元件的復用。而在實際中,頁面對元件的需求或許也稍有不同,那麼就需要一種需求 為頁面定製元件,解決的方式便是通過插槽。例項 執行上面 結果 描述 頁面使用多個自定義元件 樣式 略 序號為方便敘述新增的且每個序號指向乙個自定義...