<em id="09ttv"></em>
    <sup id="09ttv"><pre id="09ttv"></pre></sup>
    <dd id="09ttv"></dd>

        • Vue--》動(dòng)態(tài)組件和插槽的使用講解

          2023-1-6    前端達(dá)人

          目錄

          動(dòng)態(tài)組件

          keep-alive使用

          keep-alive的include和exclude屬性

          插槽


          動(dòng)態(tài)組件

          動(dòng)態(tài)組件指的是動(dòng)態(tài)切換組件的顯示與隱藏,vue提供了一個(gè)內(nèi)置的<component>組件,專(zhuān)門(mén)用來(lái)實(shí)現(xiàn)動(dòng)態(tài)組件的渲染。什么意思呢?接著往下看:

          那么內(nèi)置的<component>組件是什么情況呢?component 是可以作為標(biāo)簽使用的,其作用組件的占位符。當(dāng)然其作為標(biāo)簽直接使用是會(huì)報(bào)錯(cuò)的,還需要搭配屬性值 is ,其表示要渲染的組件的名字。如下:

          那么如何去動(dòng)態(tài)的切換組件呢?寫(xiě)一個(gè)簡(jiǎn)單的button按鈕實(shí)現(xiàn)即可,如下:

          keep-alive使用

          當(dāng)我們動(dòng)態(tài)的去創(chuàng)建組件時(shí),這一點(diǎn)和 v-if 很相似,改變組件會(huì)直接將改變之前的組件的數(shù)據(jù)銷(xiāo)毀掉。如下:

          我們給Left組件設(shè)置 +1 按鈕,來(lái)表示其數(shù)據(jù):

          用生命周期函數(shù)來(lái)監(jiān)聽(tīng)組件的創(chuàng)建和銷(xiāo)毀:

          那我們?nèi)绾卧趧?dòng)態(tài)創(chuàng)建組件的同時(shí)還能暴露組件之前的數(shù)據(jù)呢?這里就需要借助keep-alive。

          keep-alive對(duì)應(yīng)的生命周期函數(shù)

          當(dāng)組件被緩存時(shí),會(huì)自動(dòng)觸發(fā)組件的deactivated生命周期函數(shù)。

          當(dāng)組件被激活時(shí),會(huì)自動(dòng)觸發(fā)組件的activated生命周期函數(shù)。

           
                  
          1. created(){
          2. console.log('Left組件被"創(chuàng)建"了');
          3. },
          4. destroyed(){
          5. console.log('Left組件被"銷(xiāo)毀"了');
          6. },
          7. // 當(dāng)組件第一次被創(chuàng)建的時(shí)候,既會(huì)創(chuàng)建created生命周期,也會(huì)執(zhí)行activated生命周期
          8. // 當(dāng)組件被激活時(shí),只會(huì)觸發(fā)activated生命周期,不再觸發(fā)created。因?yàn)榻M件沒(méi)有被重新創(chuàng)建
          9. activated(){
          10. console.log('組件被激活了,activated');
          11. },
          12. deactivated() {
          13. console.log('組件被緩存了,deactivated');
          14. },

          keep-alive的include和exclude屬性

          include屬性用來(lái)指定:只有名稱(chēng)匹配的組件會(huì)被緩存。多個(gè)組件名之間使用英文的逗號(hào)分隔:

          exclude屬性用來(lái)指定:只有名稱(chēng)匹配的組件“不“會(huì)被緩存。多個(gè)組件名之間使用英文的逗號(hào)分隔:

          插槽

          插槽Slot)是 vue 為組件的封裝者提供的能力。允許開(kāi)發(fā)者在封裝組件時(shí),把不確定的、希望由用戶(hù)指定的部分定義為插槽。其操作如下:

          vue官方規(guī)定:每一個(gè)slot插槽,都要有一個(gè)name名稱(chēng),如果省略了slot的name屬性,則有一個(gè)默認(rèn)名稱(chēng)叫做 default ,默認(rèn)情況下,在使用組件的時(shí)候,提供的內(nèi)容都會(huì)被填充到名字為default的插槽之中。

          如果要把內(nèi)容填充到指定名稱(chēng)的插槽中,需要使用 v-slot:這個(gè)指令,v-slot:后面要跟上插槽的名字,注意:v-slot:指令不能直接用在元素身上,必須用在template標(biāo)簽上。當(dāng)然這個(gè)指令也是有簡(jiǎn)寫(xiě)形式:# 即可。template:這個(gè)標(biāo)簽是一個(gè)虛擬標(biāo)簽,只其到包裹性質(zhì)的作用,不會(huì)被渲染為任何實(shí)質(zhì)性的 html 元素。

          后備內(nèi)容:封裝組件時(shí),可以為預(yù)留的<slot>插槽提供后備內(nèi)容(默認(rèn)內(nèi)容)。如果組件的使用者沒(méi)有為插槽提供任何內(nèi)容,則后備內(nèi)容會(huì)生效。

          作用域插槽:在封裝組件時(shí),為預(yù)留的<slot>提供屬性對(duì)應(yīng)的值。如下:

          當(dāng)然上面的作用域插槽數(shù)據(jù)明顯是寫(xiě)死了,那么可以將數(shù)據(jù)動(dòng)態(tài)存儲(chǔ)在data里面嗎?答案是可以的

          文章知識(shí)點(diǎn)與官方知識(shí)檔案匹配,可進(jìn)一步學(xué)習(xí)相關(guān)知識(shí)





            來(lái)源:csdn



          藍(lán)藍(lán)設(shè)計(jì)建立了UI設(shè)計(jì)分享群,每天會(huì)分享國(guó)內(nèi)外的一些優(yōu)秀設(shè)計(jì),如果有興趣的話(huà),可以進(jìn)入一起成長(zhǎng)學(xué)習(xí),請(qǐng)加微信ban_lanlan,報(bào)下信息,藍(lán)小助會(huì)請(qǐng)您入群。歡迎您加入噢~~

          希望得到建議咨詢(xún)、商務(wù)合作,也請(qǐng)與我們聯(lián)系01063334945。 



          分享此文一切功德,皆悉回向給文章原作者及眾讀者. 免責(zé)聲明:藍(lán)藍(lán)設(shè)計(jì)尊重原作者,文章的版權(quán)歸原作者。如涉及版權(quán)問(wèn)題,請(qǐng)及時(shí)與我們?nèi)〉寐?lián)系,我們立即更正或刪除。 



          藍(lán)藍(lán)設(shè)計(jì)www.sdgs6788.com )是一家專(zhuān)注而深入的界面設(shè)計(jì)公司,為期望卓越的國(guó)內(nèi)外企業(yè)提供卓越的UI界面設(shè)計(jì)、BS界面設(shè)計(jì) 、 cs界面設(shè)計(jì) 、 ipad界面設(shè)計(jì) 、 包裝設(shè)計(jì) 、 圖標(biāo)定制 、 用戶(hù)體驗(yàn) 、交互設(shè)計(jì)、 網(wǎng)站建設(shè) 平面設(shè)計(jì)服務(wù)UI設(shè)計(jì)公司、界面設(shè)計(jì)公司、UI設(shè)計(jì)服務(wù)公司、數(shù)據(jù)可視化設(shè)計(jì)公司、UI交互設(shè)計(jì)公司、高端網(wǎng)站設(shè)計(jì)公司、UI咨詢(xún)、用戶(hù)體驗(yàn)公司、軟件界面設(shè)計(jì)公司

          日歷

          鏈接

          個(gè)人資料

          存檔

          国产精品久久久久久吹潮| 91精品国产高清91久久久久久| 久久久久久亚洲Av无码精品专口| 国产精品狼人久久久久影院| 97久久精品国产精品青草| 无码超乳爆乳中文字幕久久| 亚洲精品tv久久久久久久久久| 国产综合精品久久亚洲| 国产成人久久精品二区三区| 久久线看观看精品香蕉国产| 欧美一区二区精品久久| 亚洲综合精品香蕉久久网97| 91久久九九无码成人网站| 色综合久久久久网| 国产亚州精品女人久久久久久| 国产精品99久久久久久www| 人人狠狠综合久久亚洲婷婷| 97超级碰碰碰碰久久久久| 亚洲一区中文字幕久久| 国产免费久久久久久无码| 欧美激情精品久久久久久久 | 久久国产免费直播| 久久精品国产亚洲av麻豆蜜芽| 国内精品久久国产| 色婷婷综合久久久久中文一区二区| 久久av无码专区亚洲av桃花岛| 丁香狠狠色婷婷久久综合| 国产成人精品综合久久久| 亚洲精品NV久久久久久久久久| 久久SE精品一区二区| 久久国产精品无码一区二区三区| 国产精品久久久久天天影视| 91精品国产91久久久久久蜜臀| 免费精品久久久久久中文字幕| 久久狠狠爱亚洲综合影院| 久久精品国产99国产精品澳门| 久久e热在这里只有国产中文精品99| 亚洲国产高清精品线久久| 欧美一区二区三区久久综合| 激情五月综合综合久久69| 99蜜桃臀久久久欧美精品网站|