解讀 Vue 之插槽 (slot)(未完,待續(xù)···)

(一)前言

【MDN】HTML <slot>元素 ,作為 Web Components 技術(shù)套件的一部分,是Web組件內(nèi)的一個(gè)占位符。該占位符可以在后期使用自己的標(biāo)記語言填充,這樣您就可以創(chuàng)建單獨(dú)的DOM樹,并將它與其它的組件組合在一起。

Vue 代碼中的 slot 是什么,簡單來說就是插槽。<slot> 元素作為組件模板之中的內(nèi)容分發(fā)插
槽,傳入內(nèi)容后 <slot> 元素自身將被替換。

(二)插槽分類及使用

插槽分為三種:默認(rèn)插槽、具名插槽以及作用域插槽。

  • 默認(rèn)插槽
# 定義插槽, child.vue
<template>
    <slot>默認(rèn)內(nèi)容</slot>
</template>

#使用 parent.vue
<template>
     <child>
           <template>My Content...</template>
      </child>
</template>

<!-- 獨(dú)占默認(rèn)插槽的縮寫 -->
<child>
    <template #default="slotProps"></template>
</child>

  • 具名插槽: 顧名思義,就是給插槽起一個(gè)名字,方便區(qū)分和使用。
# 定義具名插槽,命名為 content
<template>
      <slot name="content">默認(rèn)內(nèi)容</slot>
</template>

在 2.6.0 中,我們?yōu)榫呙宀酆妥饔糜虿宀垡肓艘粋€(gè)新的統(tǒng)一的語法 (即 v-slot 指令)。它取代了 slotslot-scope 這兩個(gè)目前已被廢棄但未被移除且仍在文檔中的特性。新語法的由來可查閱這份 RFC。

  • 作用域插槽:
# 定義作用域插槽,命名為 content
<template>
      <slot name="content" :user="user" :getUserName="getUserName">默認(rèn)內(nèi)容</slot>
</template>
<script>
export default {
    data() {
        user: {name: ''}
    }
    methods: {
        getUserName() {
              console.log(this.user.name);
        }
    }
}
</script>

v-slot的縮寫是#,但是如果使用#的話,必須始終使用具插槽來代替
<template #default="slotProps"></template>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 【2019-3-4更新】Vue 2.6+修改了部分語法,對插槽的使用有了較多的更新。在本文中筆者在相應(yīng)位置給出了更...
    果汁涼茶丶閱讀 10,489評論 2 36
  • 最近忙著寫一些組件,關(guān)于插槽這一塊自己還是用著 slot 和 slot-scope,然后看了一下文檔的更新,于是又...
    費(fèi)萊姆閱讀 958評論 0 7
  • 什么是組件? 組件 (Component) 是 Vue.js 最強(qiáng)大的功能之一。組件可以擴(kuò)展 HTML 元素,封裝...
    youins閱讀 9,702評論 0 13
  • 今日筆記,slot插槽, 我男朋友跟我說,學(xué)習(xí)一樣?xùn)|西,你需要給自己提三個(gè)問題,然后帶著這三個(gè)問題去研究, 于是我...
    Autumn_2460閱讀 939評論 0 0
  • 近來,我慢慢的,慢慢的意識到,我們大都是獨(dú)立的個(gè)體,有著獨(dú)立的思維,獨(dú)立的人格,也很難再為了誰去改變什么。 我很擔(dān)...
    琉筱璃閱讀 512評論 0 3

友情鏈接更多精彩內(nèi)容