slot插槽的學(xué)習(xí)筆記

今日筆記行瑞,slot插槽盖文,

我男朋友跟我說,學(xué)習(xí)一樣?xùn)|西朽缴,你需要給自己提三個問題沧侥,然后帶著這三個問題去研究可霎,

于是我給自己提了三個問題,

slot插槽是什么東西宴杀?slot插槽有什么用癣朗?slot插槽怎么用?

進(jìn)入學(xué)習(xí):

<slot></slot> //此標(biāo)簽就是slot插槽旺罢。

當(dāng)你看到了如上標(biāo)簽旷余,就說明你轉(zhuǎn)角遇到slot插槽啦。

slot標(biāo)簽在子組件模板中插入使用扁达,可以將它理解為一個占位符正卧,在子組件模板中聲明了這么一個占位符,然后在父組件中引入此組件時跪解,便可以在子組件的開始標(biāo)簽和閉合標(biāo)簽之間填入內(nèi)容穗酥。

看代碼:(沒有slot)

1563612774315.png

可以看到,我在App組件里引入里HelloWorld組件,此時的HelloWorld組件模板里并沒有插入slot插槽砾跃,所以在父組件中引入的HelloWord組件開始標(biāo)簽和閉合標(biāo)簽之間的內(nèi)容(如此例子:“只有在當(dāng)前組件模板內(nèi)插入slot插槽才能顯示這段話”)沒有被顯示,只顯示了子組件模板中的內(nèi)容(如此例:“這是子組件HelloWorld”)骏啰。

代碼:(插入slot)

1563613127499.png

當(dāng)在子組件HelloWorld模板中插入slot插槽后,在父組件中引入的子組件標(biāo)簽之間的內(nèi)容就可以顯示出來了抽高。
如果你能看明白上面的代碼例子,那上面的三個問題就迎刃而解了吧,很簡單是不是.

  • question1:slot插槽是什么東西?
    slot插槽就是<slot></slot>這個標(biāo)簽,相當(dāng)于占位符,在該組件中插入slot標(biāo)簽,這個時候父組件中引入的該組件的開始標(biāo)簽和結(jié)束標(biāo)簽之間就有一個插槽.
  • question2:slot插槽有什么用?
    只有當(dāng)你在組件模板中引入slot標(biāo)簽時,在父組件中引入的這個組件的標(biāo)簽內(nèi)的內(nèi)容才會被顯示出來.插槽內(nèi)可以包含任何模板代碼判耕,包括 HTML,也包括組件
  • question3:slot插槽怎么用?
    如上例代碼,在組件模板內(nèi)部插入slot標(biāo)簽就可以啦.
    好簡單啊~
    但是slot并不是只有這么一點(diǎn)點(diǎn)內(nèi)容哦,
    它還有編譯作用域,后備內(nèi)容,具名插槽,作用域插槽,動態(tài)插槽名...
編譯作用域

如果你想在插槽中使用data中的數(shù)據(jù)也是可以.
比如這樣:

image.png

由此可得,插槽中可以直接訪問當(dāng)前模板作用域翘骂。
提個問題壁熄,可以在App組件的HelloWorld組件標(biāo)簽中訪問得到HelloWorld組件中的數(shù)據(jù)msg嗎?
可以來試一下碳竟,將App組件中的{{message}}改為{{msg}}
image.png

運(yùn)行結(jié)果:
image.png

這里結(jié)果報錯為msg is not defined,說明不能訪問到HelloWorld模板中的數(shù)據(jù)草丧。
這里可以記住官網(wǎng)中的一條規(guī)則:
父級模板里的所有內(nèi)容都是在父級作用域中編譯的;子模板里的所有內(nèi)容都是在子作用域中編譯的莹桅。
那么如何能獲取得到子組件中的數(shù)據(jù)呢昌执?這里就需要涉及到作用域插槽的知識點(diǎn)了。這個后面再講~

后備內(nèi)容

后備內(nèi)容也很簡單诈泼,顧名思義懂拾,就是有一個備用的內(nèi)容,當(dāng)插槽中沒有內(nèi)容的時候铐达,就用這個后備內(nèi)容補(bǔ)上岖赋。用法:將后備內(nèi)容寫在該組件(子組件)的slot標(biāo)簽中的。


image.png

可以看看當(dāng)插槽中有數(shù)據(jù)的時候瓮孙,slot標(biāo)簽中的后備內(nèi)容還會不會被顯示出來


image.png

結(jié)果顯明:
子組件標(biāo)簽中的內(nèi)容把子組件模板中slot標(biāo)簽中的后備內(nèi)容替換了唐断。
具名插槽

具名插槽用于解決有多個slot插槽時,我們希望可以在指定位置顯示具體內(nèi)容的問題杭抠。
先來看看當(dāng)有多個slot標(biāo)簽時頁面運(yùn)行結(jié)果會是什么樣子的栗涂,

image.png

可以看出:子組件模板有多少個插槽,子組件標(biāo)簽內(nèi)的內(nèi)容就分別顯示多少次祈争。這肯定不是預(yù)期期望的結(jié)果斤程。
這個時候具名插槽就派上用場了。
<slot> 元素有一個特殊的特性:name菩混。這個特性可以用來定義額外的插槽
讓我們給slot標(biāo)簽加上name:
image.png

現(xiàn)在是不是就是預(yù)期效果啦忿墅。
然而...
Vue2.6.0 更新之后,這種用法已經(jīng)被廢棄沮峡。正確用法是用v-slot指令來代替(v-slot也和v-bind一樣有縮寫疚脐,縮寫符號為”#“),并且只能在template標(biāo)簽上使用邢疙,用法如下:
image.png

現(xiàn)在 <template> 元素中的所有內(nèi)容都將會被傳入相應(yīng)的插槽棍弄。
總結(jié):在向具名插槽提供內(nèi)容的時候望薄,我們需要在一個 <template> 元素上使用 v-slot 指令,并以 v-slot 的參數(shù)的形式提供其名稱
值得注意的是呼畸,沒有給name值的slot其實(shí)都有一個隱含的name:default,任何沒有被包裹在帶有 v-slot 的 <template> 中的內(nèi)容都會被視為默認(rèn)插槽的內(nèi)容痕支。

作用域插槽

終于講到作用域插槽了,
讓我們回顧一下編譯作用域蛮原,


image.png

此時App模板是訪問不到HelloWorld組件中的數(shù)據(jù)的卧须,但是還是有方法可以實(shí)現(xiàn)App訪問HelloWorld的數(shù)據(jù)的。
實(shí)現(xiàn)方法:
我們可以將 msg 作為 <slot> 元素的一個特性綁定上去:

<template>
  <div>
    <div>這是子組件HelloWorld</div>
    <slot :msg="msg"></slot>
  </div>
</template>

綁定在 <slot> 元素上的特性被稱為插槽 prop∪逶桑現(xiàn)在在父級作用域中花嘶,我們可以給 v-slot 帶一個值(此例為helloWorld,你也可以用別的名稱)來定義我們提供的插槽 prop 的名字:

<hello-world>
      <template v-slot:default="helloWorld">訪問當(dāng)前組件的msg數(shù)據(jù)==={{helloWorld.msg}}</template>
    </hello-world>

運(yùn)行結(jié)果:

image.png

你還可以這樣寫:
image.png

這個就是用到了解構(gòu)插槽的知識,可以參考官網(wǎng)蹦漠,已經(jīng)講的很清楚了解構(gòu)插槽 Prop

本文為自己的學(xué)習(xí)筆記椭员,感覺講的有點(diǎn)亂,不過官方文檔其實(shí)已經(jīng)講的很詳細(xì)了笛园,看不懂的同學(xué)可以多看幾遍官方文檔隘击。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市喘沿,隨后出現(xiàn)的幾起案子闸度,更是在濱河造成了極大的恐慌竭贩,老刑警劉巖蚜印,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異留量,居然都是意外死亡窄赋,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進(jìn)店門楼熄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來忆绰,“玉大人,你說我怎么就攤上這事可岂〈砀遥” “怎么了?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵缕粹,是天一觀的道長稚茅。 經(jīng)常有香客問我,道長平斩,這世上最難降的妖魔是什么亚享? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮绘面,結(jié)果婚禮上欺税,老公的妹妹穿的比我還像新娘侈沪。我一直安慰自己,他們只是感情好晚凿,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布亭罪。 她就那樣靜靜地躺著,像睡著了一般晃虫。 火紅的嫁衣襯著肌膚如雪皆撩。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天哲银,我揣著相機(jī)與錄音扛吞,去河邊找鬼。 笑死荆责,一個胖子當(dāng)著我的面吹牛滥比,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播做院,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼盲泛,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了键耕?” 一聲冷哼從身側(cè)響起寺滚,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎屈雄,沒想到半個月后村视,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡酒奶,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年蚁孔,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片惋嚎。...
    茶點(diǎn)故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡杠氢,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出另伍,到底是詐尸還是另有隱情鼻百,我是刑警寧澤,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布摆尝,位于F島的核電站温艇,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏结榄。R本人自食惡果不足惜中贝,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望臼朗。 院中可真熱鬧邻寿,春花似錦蝎土、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蒜撮,卻和暖如春暴构,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背段磨。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工取逾, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人苹支。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓砾隅,卻偏偏與公主長得像,于是被迫代替她去往敵國和親债蜜。 傳聞我的和親對象是個殘疾皇子晴埂,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評論 2 355

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