Vue 組件-高級篇

插槽 (slot)

為什么使用 slot

  • 插槽的目的是讓我們原來的設(shè)備具備更多的擴展性
    • 比如電腦的 USB 插槽, 可以擴展 U 盤瘸味、硬盤谦纱、手機、音響橡娄、鍵盤捺氢、鼠標(biāo)等

組件的插槽

  • 組件的插槽也是為了讓我們封裝的組件更加具有擴展性

    • 讓使用者可以決定組件內(nèi)部的一些內(nèi)容到底展示什么
  • 例如:

    • 移動開發(fā)中, 幾乎每個頁面都有導(dǎo)航欄
    • 導(dǎo)航欄我們必然會封裝成一個插件, 比如 nav-bar 組件
    • 一旦有了這個組件, 我們就可以在多個頁面中復(fù)用了

如何封裝組件? (slot)

  • 原則: 抽取共性, 保留不同

  • 最好的封裝方法就是將共性抽取到組件中, 將不同暴露為插槽

  • 一旦我們預(yù)留了插槽, 就可以讓使用者根據(jù)自己的需求, 決定插槽中插入什么內(nèi)容

  • 是搜索框, 還是文字, 菜單, 都由調(diào)用者自己來決定

插槽的使用

插槽的基本使用

  • 在組件模板中使用 slot 標(biāo)簽
<!-- 子組件 -->
<template>
  <slot></slot>
</template>
  • 即可設(shè)置一個插槽

  • 然后在使用組件時, 往組件標(biāo)簽內(nèi)部填如入相應(yīng)的代碼即可

<!-- 父組件 -->
<template>
  <div id="app">
    <child>
      <p>插槽實例</p>
    </child>
  </div>
</template>
  • 注意:
    • 在組件模版實例中, 無論寫多少代碼, 都會同時放入到組件中進行替換, 一起生效

插槽的默認(rèn)值

  • slot 標(biāo)簽中填入的任何代碼, 都會被當(dāng)作默認(rèn)值
    • 如果在組件實例中沒有為插槽添加代碼, 那么插槽的默認(rèn)值將生效
    • 反之, 插槽的默認(rèn)值被覆蓋
<slot>
  <p>我是默認(rèn)值</p>
</slot>

具名插槽

  • 可以發(fā)現(xiàn), 如果在子組件模板中有多個插槽 slot , 那么我們在使用插槽時, 會把所有 slot 的值都替換掉

  • 所以, 當(dāng)我們想單獨修改某一個 slot 時, 可以使用具名插槽

  • 使用步驟

    1. 為插槽添加一個 name 屬性
    2. 使用時通過 slot=name 的形式綁定對應(yīng)的插槽

父組件 template 模板

<template>
  <div id="app">
    <cpn>
      <span slot="center">中間插槽</span>
      <button slot="left">左邊插槽</button>
    </cpn>
  </div>
</template>

子組件 template 模板

<template id="cpn">
  <div>
    <slot name="left"><span>left</span></slot>
    <slot name="center"><span>center</span></slot>
    <slot name="right"><span>right</span></slot>
  </div>
</template>

編譯作用域

  • 父組件模版的所有東西都會在父組件的作用域內(nèi)編譯

  • 子組件模板的所有東西都會在子組件的作用域內(nèi)編譯

  • 即在父組件的模板實例中使用的屬性都是來自父組件的實例對象

  • 子組件的模板實例中使用的屬性來自子組件的實例對象

作用域插槽

  • 父組件替換插槽的標(biāo)簽, 但是屬性蝗拿、變量由子組件來提供
    • 即在父組件模板實例中, 如何使用子組件的數(shù)據(jù)
<!-- 子組件 -->
<template>
  <div>
    <slot :data="pLanguage">
      <ul>
        <li v-for="item in pLanguage">{{item}}</li>
      </ul>
    </slot>
  </div>
</template>
  • 首先, 我們需要在插槽標(biāo)簽添加一個屬性(該屬性名任意)

  • 然后, 我們需要在父組件模版實例中獲得數(shù)據(jù)

<!-- 父組件 -->
<template>
  <div id="app">
    <child></child>
    <child>
      <!-- 在vue2.5x之前需要使用template來獲得數(shù)據(jù), 2.5x之后任何標(biāo)簽都可以 -->
      <template slot-scope="slot">
        <span v-for="item in slot.data">{{item}}</span>
      </template>
    </child>
    <child></child>
  </div>
</template>
  • slot-scope 屬性獲得由插槽傳來的數(shù)據(jù)對象
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末榕订,一起剝皮案震驚了整個濱河市析显,隨后出現(xiàn)的幾起案子谎懦,更是在濱河造成了極大的恐慌肚豺,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,110評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件界拦,死亡現(xiàn)場離奇詭異吸申,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評論 3 395
  • 文/潘曉璐 我一進店門截碴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來梳侨,“玉大人,你說我怎么就攤上這事隐岛∶睿” “怎么了?”我有些...
    開封第一講書人閱讀 165,474評論 0 356
  • 文/不壞的土叔 我叫張陵聚凹,是天一觀的道長割坠。 經(jīng)常有香客問我,道長妒牙,這世上最難降的妖魔是什么彼哼? 我笑而不...
    開封第一講書人閱讀 58,881評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮湘今,結(jié)果婚禮上敢朱,老公的妹妹穿的比我還像新娘。我一直安慰自己摩瞎,他們只是感情好拴签,可當(dāng)我...
    茶點故事閱讀 67,902評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著旗们,像睡著了一般蚓哩。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上上渴,一...
    開封第一講書人閱讀 51,698評論 1 305
  • 那天岸梨,我揣著相機與錄音,去河邊找鬼稠氮。 笑死曹阔,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的隔披。 我是一名探鬼主播赃份,決...
    沈念sama閱讀 40,418評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼奢米!你這毒婦竟也來了芥炭?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,332評論 0 276
  • 序言:老撾萬榮一對情侶失蹤恃慧,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后渺蒿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體痢士,經(jīng)...
    沈念sama閱讀 45,796評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,968評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了怠蹂。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片善延。...
    茶點故事閱讀 40,110評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖城侧,靈堂內(nèi)的尸體忽然破棺而出易遣,到底是詐尸還是另有隱情,我是刑警寧澤嫌佑,帶...
    沈念sama閱讀 35,792評論 5 346
  • 正文 年R本政府宣布豆茫,位于F島的核電站,受9級特大地震影響屋摇,放射性物質(zhì)發(fā)生泄漏揩魂。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,455評論 3 331
  • 文/蒙蒙 一炮温、第九天 我趴在偏房一處隱蔽的房頂上張望火脉。 院中可真熱鬧,春花似錦柒啤、人聲如沸倦挂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽方援。三九已至,卻和暖如春兵睛,著一層夾襖步出監(jiān)牢的瞬間肯骇,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評論 1 272
  • 我被黑心中介騙來泰國打工祖很, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留笛丙,地道東北人。 一個月前我還...
    沈念sama閱讀 48,348評論 3 373
  • 正文 我出身青樓假颇,卻偏偏與公主長得像胚鸯,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子笨鸡,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,047評論 2 355

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