<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          動態(tài)組件和插槽

          共 3666字,需瀏覽 8分鐘

           ·

          2022-05-22 15:15

          組件進(jìn)階-props校驗

          props校驗

          普通格式:props: ["propA", "propB"]。沒有類型檢查

          高階格式:

          props:?{
          ????//?基礎(chǔ)的類型檢查?(`null`?和?`undefined`?會通過任何類型驗證)
          ????propA:?Number,
          ????//?多個可能的類型
          ????propB:?[String,?Number],
          ????//?必填的字符串
          ????propC:?{
          ??????type:?String,
          ??????required:?true
          ????},
          ????//?帶有默認(rèn)值的數(shù)字
          ????propD:?{
          ??????type:?Number,
          ??????default:?100
          ????},
          ????//?帶有默認(rèn)值的對象
          ????propE:?{
          ??????type:?Object,
          ??????//?對象或數(shù)組默認(rèn)值必須從一個工廠函數(shù)獲取
          ??????default:?function?()?{
          ????????return?{?message:?'hello'?}
          ??????}
          ????},
          ????//?自定義驗證函數(shù)
          ????propF:?{
          ??????validator:?function?(value)?{
          ????????//?這個值必須匹配下列字符串中的一個
          ????????return?['success',?'warning',?'danger'].indexOf(value)?!==?-1
          ??????}
          ????}
          ??}
          復(fù)制代碼

          組件進(jìn)階 - 動態(tài)組件

          目標(biāo)效果

          需求: 完成一個注冊功能頁面, 2個按鈕切換, 額外封裝兩個組件:一個填寫注冊信息, 一個填寫用戶簡介信息

          目標(biāo): 多個組件使用同一個掛載點,并可以動態(tài)切換,這就是動態(tài)組件

          目錄結(jié)構(gòu)

          根組件
          ├──?App.vue
          └──?components
          ????├──?UserName.vue?#?用戶名和密碼輸入框
          ????└──?UserInfo.vue?#?人生格言和自我介紹框
          復(fù)制代碼

          格式

          操作

          UserName.vue




          復(fù)制代碼

          在父組件App.vue中使用




          復(fù)制代碼

          注意

          • is只能是動態(tài)屬性=》:is="組件注冊后的標(biāo)簽名字符串或data變量"
          • 不能直接拿注冊標(biāo)簽名賦值使用

          小結(jié)

          vue內(nèi)置component組件, 配合is屬性, 設(shè)置要顯示的組件標(biāo)簽名字

          組件進(jìn)階-keep-alive組件

          目標(biāo)

          掌握組件緩存的使用

          背景

          組件切換會導(dǎo)致組件被頻繁銷毀和重新創(chuàng)建, 大多數(shù)情況下是有自己的意義的,但也可能會導(dǎo)致不必要的性能損耗

          演示1: 可以先給UserName.vue和UserInfo.vue 注冊created和destroyed生命周期事件, 觀察創(chuàng)建和銷毀過程

          keep-alive

          使用Vue內(nèi)置的keep-alive組件, 可以讓包裹的組件保存在內(nèi)存中不被銷毀

          格式

          演示2: 使用keep-alive內(nèi)置的vue組件, 讓動態(tài)組件緩存而不是銷毀

          補(bǔ)充生命周期:

          • activated - 激活
          • deactivated - 失去激活狀態(tài)

          ????
          ????"comName">

          復(fù)制代碼

          小結(jié)

          keep-alive可以提高組件的性能, 內(nèi)部包裹的標(biāo)簽不會被銷毀和重新創(chuàng)建, 觸發(fā)激活和非激活的生命周期方法

          組件進(jìn)階-keep-alive組件-指定緩存

          目標(biāo)

          掌握keep-alive的include屬性的用法

          語法

          1. `include="組件名1,組件名2..."`
          2. `:include="['組件名1', '組件名2']"`
          "name1,name2">
          ????
          ????"comName">

          復(fù)制代碼

          注意:

          1. 匹配首先檢查組件自身的 name 選項,如果 name 選項不可用,則匹配它的局部注冊名稱 (父組件 components 選項的鍵值)

          組件進(jìn)階 - 默認(rèn)插槽

          目標(biāo)

          掌握組件插槽的使用

          理解

          生活中的插槽

          vue中的插槽

          1. 組件通過插槽傳入自定義結(jié)構(gòu)
          2. 用于實現(xiàn)組件的內(nèi)容分發(fā), 通過 slot 標(biāo)簽, 可以接收到寫在組件標(biāo)簽內(nèi)的內(nèi)容
          3. vue提供組件插槽能力, 允許開發(fā)者在封裝組件時,把不確定的部分定義為插槽

          格式

          在定義組件時,在template中用slot來占個坑;

          使用時,將組件之間的內(nèi)容來填坑;

          示例

          組件進(jìn)階-具名插槽

          目標(biāo)

          掌握具名插槽的使用

          背景

          當(dāng)一個組件內(nèi)有2處以上需要外部傳入標(biāo)簽的地方

          格式

          定義:

          使用:


          • ????
            ??我是文字哦
            ????

            復(fù)制代碼

            寫法2:


            ????
            ????#one>
            ??

            ????????????

            寒雨連江夜入?yún)?


            ????????????

            平明送客楚山孤。


            ????????????

            洛陽親友如相問,


            ????????????

            一片冰心在玉壺。


            ????????

            ????
            ????#two>
            ??"../assets/mm.gif"?alt=""?/>
            ????

            復(fù)制代碼

            小結(jié)

            1. slot有可以設(shè)置多個
            2. 定義組件時:slot的name屬性起插槽名
            3. 使用組件時, template配合#插槽名傳入具體html標(biāo)簽或組件

            組件進(jìn)階-作用域插槽(難點)

            目標(biāo)

            掌握作用域插槽的用法

            目標(biāo): 子組件中的數(shù)據(jù), 在給插槽賦值時在父組件環(huán)境下使用=> 子傳父=》傳數(shù)據(jù)

            步驟

            • 創(chuàng)建子組件, 準(zhǔn)備slot, 在slot上綁定屬性和子組件值
            • 使用子組件, 傳入自定義標(biāo)簽, 用template和v-slot="自定義變量名"
            • 自定義變量名會自動綁定slot上所有屬性, 就可以使用子組件內(nèi)值, 并替換slot位置

            示例

            具名插槽, 給slot綁定屬性和值




            復(fù)制代碼
            1. 父組件

            ????
            ??






          .content{
          background-color:?#ccc;
          }

          復(fù)制代碼

          小結(jié)

          組件內(nèi)變量綁定在slot上, 然后使用組件v-slot:插槽名字="變量" ,變量上就會綁定slot傳遞的屬性和值

          自定義指令-基本使用

          自定義指令文檔[1](了解)

          除了核心功能默認(rèn)內(nèi)置的指令 (v-model?和?v-show)等,Vue 也允許注冊自定義指令=》?v-xxx

          1. html+css+js的復(fù)用的主要形式是組件
          2. 你需要對普通 DOM 元素進(jìn)行底層操作,這時候就會用到自定義指令

          作用

          擴(kuò)展標(biāo)簽額外的功能

          自定義指令-定義方式

          {
          ??data(){},
          ??methods:?{},
          ??directives:?{
          ????focus:?{?//?自定義指令名
          ????????inserted(el){?//?固定配置項?-?當(dāng)指令插入到標(biāo)簽自動觸發(fā)此函數(shù)
          ????????????el.focus()
          ????????}
          ????},
          ??},
          }
          復(fù)制代碼

          示例 自動獲取焦點




          復(fù)制代碼

          自定義指令-傳值和更新

          目標(biāo): 使用自定義指令, 傳入一個值

          需求: 定義color指令-傳入一個顏色, 給標(biāo)簽設(shè)置文字顏色

          main.js定義處修改一下

          directives:?{
          ??"color":{
          ????inserted(el,?binding){?//?插入時觸發(fā)此函數(shù)
          ??????el.style.color?=?binding.value;
          ????},
          ????update(el,?binding){?//?更新綁定的變量時觸發(fā)此函數(shù)=》手動更新
          ??????el.style.color?=?binding.value;
          ????}
          ??}
          }
          復(fù)制代碼

          Direct.vue處更改一下

          "theColor"?@click="changeColor">使用v-color指令控制顏色,?點擊變藍(lán)




          復(fù)制代碼

          總結(jié): v-xxx, 自定義指令, 獲取原生DOM, 自定義操作

          關(guān)于本文

          作者:pain_past_is_pleasur

          https://juejin.cn/post/7095716277196587039

          最后

          歡迎關(guān)注【前端瓶子君】??ヽ(°▽°)ノ?
          回復(fù)「算法」,加入前端編程源碼算法群,每日一道面試題(工作日),第二天瓶子君都會很認(rèn)真的解答喲!
          回復(fù)「交流」,吹吹水、聊聊技術(shù)、吐吐槽!
          回復(fù)「閱讀」,每日刷刷高質(zhì)量好文!
          如果這篇文章對你有幫助,在看」是最大的支持
          ?》》面試官也在看的算法資料《《
          “在看和轉(zhuǎn)發(fā)”就是最大的支持
          瀏覽 48
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  黄片网站视频 | 蜜桃臀久久久蜜桃臀久久 | 亚洲色欲一区二区 | 国产一级精品成人无码毛片 | 国产精品成人小电影 |