vue基礎-組件&插槽


組件

組件化的意義:封裝(復用,把邏輯隱藏起來,提高可維護性),快速開發(搭積木)
約定:我們通常把那些除了HTML標簽以外的自定義組件,才稱為‘組件’,結論是,我們說“父組件”“子組件”指的是

  • 本質:就是HTML的擴展。結論:我們在使用組件時,要把它當成HTML一樣的感覺來使用
  • 定義一個組件
    • 語法:Vue.component("組件名","選項")
    • 第一個參數,‘組件名’:必須是兩個以上的”單詞“,並且要用中划線(-)連接
    • 第二個參數,選項:除了el不能用,其他選項都可以使用,比如data,methods,生命周期,watch,computed
    • template選項:對組件來講,有一個必須的選項是template,這個選項用於指定當前視圖的模板(HTML字符串),在視圖模板中可以使用我們學過的所有指令
    • template視圖結構必須是”單一節點“
    • data選項:組件可以有自己獨立的data選項,但是data不再是一個{},必須是一個工廠函數
    • props選項:props表示由父組件作用域傳遞過來的‘自定義屬性’,接收之后可以通過this訪問。所以props數據可以在當前組件中的指令,其他選項中使用,
    • props:父組件向子組件傳遞數據,子組件使用props接收,可以傳遞基本數據類型,引用數據類型
    • $emit('自定義事件名稱','...將要回傳給父組件的數據列表'):用於觸發一個自定義事件,同時向父組件傳遞數據

結論:組件化的核心就是"自定義屬性props","自定義事件$emit()"+"自定義插槽 "

  • 1.props是子組件的一個選項,用於接收父組件給我的自定義屬性 =>v-bind,簡寫為:
  • 2.$emit(),是一個vue api,用於觸發父組件給我的自定義事件(向父組件發送數據)=>v-on 簡寫為@
  • 3.slot,是vue的一個內置組件,可以直接使用,稱為”插槽“=>v-slot 簡寫為#
    image

父子組件通信

  • 1.當組件需要向子組件傳遞參數時,我們使用自定義屬性,再在子組件中使用props接收即可
  • 2.當子組件需要向父組件傳遞數據時,我們使用自定義事件,在子組件中使用$emit()觸發並回傳數據
    自定義事件,在子組件中無需接收,可以直接使用。自定義屬性,在子組件必須使用props接收,否則用不了

插槽

  • 如何理解插槽?當我們封裝自定義組件時,從組件結構的角度看,某些結構是不確定的,那么我們使用slot占個位置。當這組件被真正使用時,才能夠確定這個位置放什么元素,這就叫”插槽“(插座,有插孔,但是你不確定插什么)
  • 結論:以后封裝組件,哪個地方不確定,就放一個slot占位置。如果有多個地方不確定,就放多個不同的slot
  • 如何區分slot的不同呢?使用”命名插槽“,給slot name=’‘
    • 1.slot默認叫”default“
    • 2.v-slot是一個指令,用於指定用哪個slot來顯示當前元素,簡寫#
    • 3.slot xxx 可以添加任意的自定義屬性,在父組件中使用v-slot來獲取數據

看結構的不同來確定哪里用slot呀
image
image


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM