例項理解Vue的插槽

2021-10-08 09:45:56 字數 2905 閱讀 4456

先準備乙個情景,你需要用到第三方的元件,比如antd的**,預設情況下表頭和內容都是簡單資料,單元格也無法合併,只有基礎的樣式。可能會有一些api可以對**進行簡單的裝飾,比如bordered給**增加邊框size="middle"設定**大小,但是依舊是乙個非常簡單的**。**的列規定了用column實現,**內容必須是規定的data-source陣列,無法更改任何內容

但是如果希望像下圖這樣,給表頭增加小圖示,給**內的內容增加樣式,都需要乙個插槽。插槽內的html**就是需要插入指定位置的html。

那子元件怎麼知道這裡有個插槽呢,也就需要在傳入子元件的html中最外層增加slot=' '屬性。

一般來說是,被引用的元件用希望改變第三方元件的樣式或者要往元件內插入其他內容的

,這個div可以替換成任何閉合元素,例子如下。(注意:繫結的部分在js裡面,template裡面只寫html,這裡展示的是繫結好之後再templa中對基礎元件的更改)

// name是name列整一列的插槽,展示的是把原始的文字}加個鏈結

"name" slot-scope=

"text"

>

}<

/a>

// customtitle是name列表頭的插槽,往這個位置插入 name

"customtitle"

>

"smile-o"

/> name<

/span>

// 繫結了tags列

"tags" slot-scope=

"tags"

>

v-for=

"tag in tags"

:key=

"tag"

:color=

"tag === 'loser' ? 'volcano' : tag.length > 5 ? 'geekblue' : 'green'"

>

}<

/a-tag>

<

/span>

// 繫結了actions列

"action" slot-scope=

"text, record"

>

invite 一

}<

/a>

"vertical"

/>

delete<

/a>

"vertical"

/>

="ant-dropdown-link"

> more actions

"down"

/>

<

/a>

<

/span>

<

/a-table>

還有乙個是在子元件內的某個位置定義預設的插槽,此時子元件內的全部html都會被查到這個指定位置。其實預設插槽就是< slot name='default'>比如:

// 父元件

這裡全部會在children

<

/slot>中顯示

<

/children>

//children元件

111<

/slot>

22223333

<

/slot>

<

/template>

注意插槽的意義就是方便父元件插入內容進來,因此slot之間的內容會被忽視的,除非父元件沒有提供任何插槽的內容。因此這時候看到的應該是:

111

這裡全部會在children中顯示

222這裡全部會在children中顯示

還需要注意,當父元件使用的是}是可以不需要template的,但是如果是v-slot比如}這種是只能在template裡面。

而作用域插槽就是父元件想使用子元件的某個屬性了,所以先決條件也是子元件願意在插槽中傳值。

// 子元件傳遞test橋梁

"test"

>

<

/slot>

// 子元件的data定義如下

export

default}}

}

父元件如果接收的匿名插槽,這個default可以省略。子元件傳遞了橋梁test,父元件可以任意定義接收的變數,比如這裡是user。只需要子元件:test="test"就行。

default

="user"

>

}<

/template>

注意如果是具名插槽,需要把default換成對應的slot名字,其中# 代表 v-slot 的縮寫,縮寫在有引數的情況下才會生效

"user"

>

}<

/template>

理解Vue插槽

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

Vue中插槽的理解

插槽,也就是slot,在vue中的作用相當於乙個模板,通過父元件裡的這個模板,就能決定子元件裡使用這個模板的時候,顯不顯示,顯示什麼,怎麼顯示。首先來個簡單的例子 合成元件 yangp child child裡的模板 hellop slot div 顯示的效果 插槽裡可以包含任何模板 包括html,...

Vue 插槽(slot)的理解

父元件向子元件傳值我們會一般用到props,那傳遞乙個dom節點呢?使用插槽slot,能高效地解決父元件向子元件插入dom節點問題。插槽 在vue中,可以在元件內部定義乙個或多個插槽,子元件決定插槽的位置,也可以設定預設的資訊,父元件在插槽裡插入資訊,有預設資訊時,父元件不插入資訊,則顯示子元件的預...