1. 什么是插槽
插槽(Slot)是 vue 為組件的封裝者提供的能力。允許開(kāi)發(fā)者在封裝組件時(shí)渠驼,把不確定的蜈块、希望由用戶指定的部分定義為插槽∶陨龋可以把插槽認(rèn)為是組件封裝期間百揭,為用戶預(yù)留的內(nèi)容的占位符。
2. 插槽的基礎(chǔ)用法
在封裝組件時(shí)蜓席,可以通過(guò) <slot> 元素定義插槽器一,從而為用戶預(yù)留內(nèi)容占位符。示例代碼如下:
沒(méi)有預(yù)留插槽的內(nèi)容會(huì)被丟棄
封裝組件時(shí)厨内,可以為預(yù)留的 <slot> 插槽提供后備內(nèi)容(默認(rèn)內(nèi)容)祈秕。如果組件的使用者沒(méi)有為插槽提供任何內(nèi)容,則后備內(nèi)容會(huì)生效隘庄。示例代碼如下:
3. 具名插槽
如果在封裝組件時(shí)需要預(yù)留多個(gè)插槽節(jié)點(diǎn)踢步,則需要為每個(gè) <slot> 插槽指定具體的 name 名稱(chēng)。這種帶有具體名稱(chēng)的插槽叫做“具名插槽”丑掺。示例代碼如下:
注意:沒(méi)有指定 name 名稱(chēng)的插槽获印,
會(huì)有隱含的名稱(chēng)叫做“default”
。
3.1 為具名插槽提供內(nèi)容
在向具名插槽提供內(nèi)容的時(shí)候,我們可以在一個(gè) <template> 元素上使用 v-slot 指令兼丰,并以 v-slot 的參數(shù)的形式提供其名稱(chēng)玻孟。示例代碼如下:
3.2 具名插槽的簡(jiǎn)寫(xiě)形式
把參數(shù)之前的所有內(nèi)容 (v-slot:) 替換為字符 #。例如 v-slot:header
可以被重寫(xiě)為 #header:
4. 作用域插槽
在封裝組件的過(guò)程中鳍征,可以為預(yù)留的 <slot> 插槽綁定 props 數(shù)據(jù)黍翎,這種帶有 props 數(shù)據(jù)的 <slot> 叫做“作用域插槽”。示例代碼如下:
4.1 使用作用域插槽
可以使用 v-slot: 的形式艳丛,接收作用域插槽對(duì)外提供的數(shù)據(jù)匣掸。示例代碼如下:
4.2 解構(gòu)插槽 Prop
作用域插槽對(duì)外提供的數(shù)據(jù)對(duì)象,可以使用解構(gòu)賦值簡(jiǎn)化數(shù)據(jù)的接收過(guò)程氮双。示例代碼如下: