vue插槽(slot)詳解

2021-10-21 02:13:18 字數 1706 閱讀 8166

最近被問起是否了解vue的插槽(slot),咋一想發現,似乎很少用到這玩意。所以整理了下slot的一些用法。

vue 實現了一套內容分發的 api,將元素作為承載分發內容的出口,這是vue文件上的說明。具體來說,slot就是可以讓你在元件內新增內容的『空間』。舉個例子:

//子元件 : (假設名為:ebutton)

//父元件:(引用子元件 ebutton)

我們知道,如果直接想要在父元件中的 中新增內容,是不會在頁面上渲染的。那麼我們如何使新增的內容能夠顯示呢?在子元件內新增slot 即可。

//子元件 : (假設名為:ebutton)

//slot 可以放在任意位置。(這個位置就是父元件新增內容的顯示位置)

子元件可以在任意位置新增slot , 這個位置就是父元件新增內容的顯示位置。

上面我們了解了,slot 其實就是能夠讓我們在父元件中新增內容到子元件的『空間』。我們可以新增父元件內任意的data值,比如這樣:

//父元件:(引用子元件 ebutton)

new vue(

})

使用資料的語法完全沒有變,但是,我們能否直接使用子元件內的資料呢?顯然不行!!

// 子元件 : (假設名為:ebutton)

new vue(

})// 父元件:(引用子元件 ebutton)

直接傳入子元件內的資料是不可以的。因為:父級模板裡的所有內容都是在父級作用域中編譯的;子模板裡的所有內容都是在子作用域中編譯的。

所謂的後背內容,其實就是slot的預設值,有時我沒有在父元件內新增內容,那麼 slot就會顯示預設值,如:

//子元件 : (假設名為:ebutton)

這就是預設值

有時候,也許子元件內的slot不止乙個,那麼我們如何在父元件中,精確的在想要的位置,插入對應的內容呢? 給插槽命乙個名即可,即新增name屬性。

//子元件 : (假設名為:ebutton)

這就是預設值1

這就是預設值2

這就是預設值3

父元件通過v-slot : name 的方式新增內容:

//父元件:(引用子元件 ebutton)

這是插入到two插槽的內容

這是插入到three插槽的內容

當然 vue 為了方便,書寫 v-slot:one 的形式時,可以簡寫為 #one

通過slot 我們可以在父元件為子元件新增內容,通過給slot命名的方式,我們可以新增不止乙個位置的內容。但是我們新增的資料都是父元件內的。上面我們說過不能直接使用子元件內的資料,但是我們是否有其他的方法,讓我們能夠使用子元件的資料呢? 其實我們也可以使用v-slot的方式:

//子元件 : (假設名為:ebutton)

這就是預設值1 //繫結child1的資料

這就是預設值2 //繫結child2的資料,這裡我沒有命名slot

new vue(

})//父元件:(引用子元件 ebutton)

} // 同上,由於子元件沒有給slot命名,預設值就為default

總結來說就是:

Vue 使用插槽(slot)

當父元件向子元件傳值的時候,有時候,父元件傳的並不是單純的數值 字串,有可能是帶標籤 dom 的資料,那麼如何傳值呢?如果我們像正常父向子傳值那樣操作。content hello,slot slott 子元件 class slott div div template export default s...

Vue初學 插槽slot

匿名插槽 我們使用slot標籤在元件中定義插槽,當我們在呼叫元件的標籤內寫入內容的時候,這段內容會替換匿名的插槽,slot標籤相當於乙個佔位符。1.當插槽標籤中有內容,而且元件標籤內未插入任何資料時,頁面會顯示插槽標籤內的內容,相當於是插槽的預設值。但是如果元件標籤內插入了任意資料,頁面則會顯示元件...

Vue筆記 slot插槽

元件的插槽是為了讓封裝的元件有更好的擴充套件性,讓使用者決定要展示什麼東西 元件模板 cpn 我是cpnh2 slot div template html 中運用元件,並將不同的內容放入插槽 type button 確定button cpn 哈哈哈哈哈哈span cpn 呵呵呵呵呵呵span cpn...