vue之插槽

插槽

<slot>元素底洗,承載分發(fā)內(nèi)容的出口涩澡。或者理解為占位符票摇,當父組件引用子組件時可以填充相應內(nèi)容拘鞋。
子組件<item-d>

<div class="demo">
    <slot></slot>
</div>

父組件

<item-d>
    插槽內(nèi)容
</item-d>
瀏覽器查看DOM

當然插槽內(nèi)可以包含任何模板代碼,包括 HTML

如下父組件引用<item-d>時插入個按鈕

<item-d>
    <button @click="account++">{{account}}</button>
</item-d>
account 為父組件中的數(shù)據(jù)屬性

編譯作用域

在上例中矢门,<button>是作為父組件的內(nèi)容進行編譯的盆色,所以可以訪問父組件的實例屬性account

后備內(nèi)容

插槽的默認內(nèi)容祟剔。當父組件使用子組件不提供插槽內(nèi)容時隔躲,默認顯示插槽的后備內(nèi)容
<item-d>組件中

<div>
    <slot>這是默認顯示內(nèi)容</slot>
</div>

父組件

<item-d></item-d>
未提供插槽內(nèi)容
<item-d>
    父組件提供插槽內(nèi)容
</item-d>
若有則顯示提供的內(nèi)容

具名插槽

當子組件中有多個插槽時,想將不同的內(nèi)容顯示到對應插槽中物延,則要借助于<slot>name屬性蹭越。
在子組件<item-d>

<div class="demo">
    <slot name="s1">插槽一</slot>
    <slot>插槽二</slot>
    <slot>
        <h1>1</h1>
    </slot>
</div>

父組件

<item-d>
    <template v-slot:s1>1</template>
    <template>2</template>
    未定義
    <template v-slot:s1>3</template>
</item-d>

頁面顯示

在父組件中,<template>2</template>未定義都沒有設置v-slot教届,默認屬于default插槽响鹃,而<template v-slot:s1>1</template><template v-slot:s1>3</template>屬于同一個具名插槽;子組件中案训,<slot>插槽二</slot><slot><h1>1</h1></slot>都是default插槽买置;在實際頁面顯示中可以看到2 未定義出現(xiàn)了兩次,即default插槽使用了兩次强霎,而s1插槽的位置上顯示的是3忿项,則說明在父組件引用子組件時,后面的覆蓋了前面的s1插槽(或者說重定義)城舞。

  • 沒有設置name屬性值時轩触,默認為default
  • 父組件引用子組件時,任何沒有被包裹在帶有 v-slot<template> 中的內(nèi)容都會被視為默認插槽的內(nèi)容
  • 如果出現(xiàn)相同v-slot<template>家夺,后面的會覆蓋前面的

作用域插槽

父組件通過插槽訪問子組件的數(shù)據(jù)脱柱。子組件在<slot>元素上綁定的屬性稱為插槽prop,父組件使用v-slot指令定義插槽prop拉馋。定義的屬性只能在對應的<template>中使用榨为,即作用域只在當前的<template>中有效惨好。
和父組件向子組件通信的prop類似:將要訪問的數(shù)據(jù)綁定到元素屬性,然后在引用的地方“聲明”下随闺。
子組件

<div class="demo">
    <slot name="s1" :title="title"></slot>
</div>
...
export default {
  data(){
    return {
      title:'標題'
    }
  }
}

父組件

<item-d>
    <template v-slot:s1="t1">{{t1.title}}</template>
</item-d>

其它

  • 父組件使用v-slot指令定義插槽prop日川,只在其<template>中有效。
  • 若子組件中只有默認插槽矩乐,如v-slot:default="t1"可以簡寫成v-slot="t1"龄句;當同時存在具名插槽時,則不能這樣簡寫(作用域不明確)散罕。
  • v-slot:可以簡寫成#撒璧,v-slot="t1"可以簡寫成#default="t1"v-slot:s1可以簡寫成#s1笨使。(縮寫只在其有參數(shù)的時候才可用)卿樱。
  • 支持動態(tài)的插槽名,如在父組件內(nèi)s="s1"硫椰,則#[s]等同于#s1繁调,當然變量s的值要是個字符串。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末靶草,一起剝皮案震驚了整個濱河市蹄胰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌奕翔,老刑警劉巖裕寨,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異派继,居然都是意外死亡宾袜,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進店門驾窟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來庆猫,“玉大人,你說我怎么就攤上這事绅络≡屡啵” “怎么了?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵恩急,是天一觀的道長杉畜。 經(jīng)常有香客問我,道長衷恭,這世上最難降的妖魔是什么此叠? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮匾荆,結(jié)果婚禮上拌蜘,老公的妹妹穿的比我還像新娘杆烁。我一直安慰自己牙丽,他們只是感情好简卧,可當我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著烤芦,像睡著了一般举娩。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上构罗,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天铜涉,我揣著相機與錄音,去河邊找鬼遂唧。 笑死芙代,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的盖彭。 我是一名探鬼主播纹烹,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼召边!你這毒婦竟也來了铺呵?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤隧熙,失蹤者是張志新(化名)和其女友劉穎片挂,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體贞盯,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡音念,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了躏敢。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片症昏。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖父丰,靈堂內(nèi)的尸體忽然破棺而出肝谭,到底是詐尸還是另有隱情,我是刑警寧澤蛾扇,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布攘烛,位于F島的核電站,受9級特大地震影響镀首,放射性物質(zhì)發(fā)生泄漏坟漱。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一更哄、第九天 我趴在偏房一處隱蔽的房頂上張望芋齿。 院中可真熱鬧腥寇,春花似錦、人聲如沸觅捆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽栅炒。三九已至掂摔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間赢赊,已是汗流浹背乙漓。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留释移,地道東北人叭披。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像玩讳,于是被迫代替她去往敵國和親涩蜘。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 什么是組件锋边? 組件 (Component) 是 Vue.js 最強大的功能之一皱坛。組件可以擴展 HTML 元素,封裝...
    youins閱讀 9,480評論 0 13
  • 這篇筆記主要包含 Vue 2 不同于 Vue 1 或者特有的內(nèi)容豆巨,還有我對于 Vue 1.0 印象不深的內(nèi)容剩辟。關(guān)于...
    云之外閱讀 5,050評論 0 29
  • 【2019-3-4更新】Vue 2.6+修改了部分語法,對插槽的使用有了較多的更新往扔。在本文中筆者在相應位置給出了更...
    果汁涼茶丶閱讀 10,248評論 2 36
  • vue概述 在官方文檔中贩猎,有一句話對Vue的定位說的很明確:Vue.js 的核心是一個允許采用簡潔的模板語法來聲明...
    li4065閱讀 7,216評論 0 25
  • 組件(Component)是Vue.js最核心的功能,也是整個架構(gòu)設計最精彩的地方萍膛,當然也是最難掌握的吭服。...
    六個周閱讀 5,604評論 0 32