Vue2.6 插槽

具名插槽

當我們組件需要用到多個插槽的時候, 需要用到具名插槽:

// subComponent
<div class="container">
  <header>
    <slot name="header"></slot>
  </header>
  <main>
    <slot></slot>
  </main>
  <footer>
    <slot name="footer"></slot>
  </footer>
</div>

在向上例中, 具名插槽提供內(nèi)容時, 需要在一個 <template> 元素上使用 v-slot 指令, 并以 v-slot 的參數(shù)的形式提供插槽名稱:

// parentComponent
<sub-component>
  <template v-slot="header">
    <h1>這里是header的插槽內(nèi)容</h1>
  </template>

  <p>這里是默認插槽的插槽內(nèi)容</p>
  <p>And another one.</p>

  <template v-slot:footer>
    <p>這里是footer的插槽內(nèi)容</p>
  </template>
</sub-component>

當然, 也可以在一個 <template> 中包裹默認插槽的內(nèi)容:

// parentComponent
<sub-component>
  <template v-slot="header">
    <h1>這里是header的插槽內(nèi)容</h1>
  </template>
 
  <template v-slot:default>
    <p>這里是默認插槽的插槽內(nèi)容</p>
    <p>And another one.</p>
  </template>

  <template v-slot:footer>
    <p>這里是footer的插槽內(nèi)容</p>
  </template>
</sub-component>

任何的一種寫法都會渲染出:

<div class="container">
  <header>
    <h1>這里是header的插槽內(nèi)容</h1>
  </header>
  <main>
    <p>這里是默認插槽的插槽內(nèi)容</p>
    <p>And another one.</p>
  </main>
  <footer>
    <p>這里是footer的插槽內(nèi)容</p>
  </footer>
</div>

作用域插槽

有時候需要讓插槽內(nèi)容能夠訪問到子組件中才有的數(shù)據(jù), 例如在 <user-info> 組件中:

// userInfo
<span>
    <slot name="user-info">{{ user.userName }}</slot>
</span>

此時, 在父組件中, 如果想要讓它的后備內(nèi)容顯示用戶的年齡, 以取代用戶名, 如下:

// parentComponent
<current-user>
  <template>
    {{ user.age }}
  </template>
</current-user>

顯然, 這段代碼不會正常的工作, 因為只有 <user-info> 組件中才可以訪問到 user, 而當前提供的內(nèi)容是父組件渲染的锋八。

為了讓 user 在父組件的插槽內(nèi)容可以被使用, 可以將 user 作為 <slot> 元素的一個特性綁定上去:

// userInfo
<span>
    <slot name="user-info" v-bind:user="user"></slot>
</span>

綁定在 <slot> 元素上的特性被稱為 插槽prop , 現(xiàn)在在父組件中, 可以給 v-slot 帶一個值來定義剛才提供的 插槽prop 的名字:

// parentComponent
<user-info>
    <template v-slot:user-info="slotProps">
    {{ slotProps.user.age }}
  </template>
</user-info>

獨占默認插槽

當被提供的內(nèi)容只有默認插槽時, 還有著下面的寫法:

// userInfo
<span>
    <slot v-bind:user="user"></slot>
</span>
// parentComponent
<user-info v-slot="slotProps">
  <template v-slot:default="slotProps">
        {{ slotProps.user.age }}
    </template>
</user-info>

或者, 將組件的標簽當做插槽的模板, 也就是把 <user-info> 當做 <template> 標簽來使用浙值。這樣就可以把 v-slot 直接卸載組件的標簽上:

// parentComponent
<user-info v-slot:default="slotProps">
    {{ slotProps.user.age }}
</user-info>

或者:

// parentComponent
<user-info v-slot="slotProps">
    {{ slotProps.user.age }}
</user-info>

注意:默認插槽的縮寫語法不能和具名插槽混用, 否則會導致作用域不明確:

// parentComponent
<!--無效,會導致警告-->
<user-info v-slot="slotProps">
  {{ slotProps.user.age }}
    <template v-slot:other="otherSlotProps">
        slotProps is NOT available here
    </template>
</user-info>

只要是出現(xiàn)多個插槽的私爷,必須為所有插槽使用完整的基于 <template> 的語法:

// parentComponent
<user-info>
    <template v-slot:default="slotProps">
        {{ slotProps.user.age }}
    </template>
    
    <template v-slot:other="otherSlotProps">
        ...
    </template>
</user-info>
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市耗式,隨后出現(xiàn)的幾起案子顿苇,更是在濱河造成了極大的恐慌,老刑警劉巖圣拄,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嘴秸,死亡現(xiàn)場離奇詭異毁欣,居然都是意外死亡,警方通過查閱死者的電腦和手機岳掐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進店門凭疮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人串述,你說我怎么就攤上這事执解。” “怎么了?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵衰腌,是天一觀的道長新蟆。 經(jīng)常有香客問我,道長右蕊,這世上最難降的妖魔是什么琼稻? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮饶囚,結(jié)果婚禮上帕翻,老公的妹妹穿的比我還像新娘。我一直安慰自己萝风,他們只是感情好嘀掸,可當我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著规惰,像睡著了一般睬塌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上歇万,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天衫仑,我揣著相機與錄音,去河邊找鬼堕花。 笑死文狱,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的缘挽。 我是一名探鬼主播瞄崇,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼壕曼!你這毒婦竟也來了苏研?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤腮郊,失蹤者是張志新(化名)和其女友劉穎摹蘑,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體轧飞,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡衅鹿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了过咬。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片大渤。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖掸绞,靈堂內(nèi)的尸體忽然破棺而出泵三,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布烫幕,位于F島的核電站俺抽,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏较曼。R本人自食惡果不足惜凌埂,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望诗芜。 院中可真熱鬧瞳抓,春花似錦、人聲如沸伏恐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽翠桦。三九已至横蜒,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間销凑,已是汗流浹背丛晌。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留斗幼,地道東北人澎蛛。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像蜕窿,于是被迫代替她去往敵國和親谋逻。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,779評論 2 354

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