vue入坑之slot(插槽)
阿新 • • 發佈:2019-01-23
slot意思為插槽,水溝;
我們可以把它想象為電腦主機板上的插槽,用來插放記憶體條等對應的部件。
官方文件是這樣描述的:
我們將這段話中的“ 內容分發"這四個字作為切入點,比較容易理解,假若我們註冊了一個名為aaa的元件:
var vm=new Vue({
el:'#app',
components:{
aaa:{
template:"<p>這裡是預設內容</p>"
}
}
})
我們在使用元件的時候在元件的內部使用了DOM,那麼我們新增的這些DOM該顯示在哪裡,怎麼顯示?
如:
<aaa><span>我自己添加了DOM</span></aaa>
因為我們在註冊元件的時候並沒有設定<slot>,所以我們新增的DOM內容不會顯示
如果我們在註冊元件的時候設定了slot,如:
var vm=new Vue({
el:'#app',
components:{
aaa:{
template:"<p><slot></slot>這裡是預設內容</p>"
}
}
})
這時候所謂的"內容分發"就會將我們新增的DOM內容分發到卡槽內~
最後出來的效果將會是“我自己添加了DOM這裡是預設內容”。
假若我需要指定插入多個DOM呢?這時候我們就需要對我們設定的<slot>進行命名,稱為具名slot:
var vm=new Vue({
el:'#app',
components:{
aaa:{
template:"<p><slot name='first'></slot>這裡是預設內容<slot name='second'></slot></p>"
}
}
})
我們在使用元件的時候,對新增在元件裡面的內容也需要做一個分發指向,指向插入哪個卡槽內:
結果將會輸出“這裡是第一個位置這裡是預設內容這裡是第二個位置”。<aaa> <span slot="first">這裡是第一個位置 </span> <span slot="second">這裡是第二個位置 </span> </aaa>