亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

搜索
博主信息
博文 49
粉絲 0
評論 0
訪問量 49540
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
組合 API(Composition API)
超超多喝水
原創(chuàng)
1826人瀏覽過

組合 API(Composition API)

初始組合 API

傳統(tǒng) option 配置方法寫組件的時(shí)候,隨著業(yè)務(wù)復(fù)雜度越來越高,代碼量會(huì)越來越大,由于相關(guān)業(yè)務(wù)的代碼需要組訓(xùn) option 的配置,寫在 data、methods 等位置,后續(xù)維護(hù)復(fù)雜,代碼可復(fù)用性不高,使用組合 API 就能很好的規(guī)避這些問題,組合 API 的好處:代碼都在 setup()里面,更加靈活,不受條條框框約束,增加代碼可復(fù)用性

問題筆記

  • setup()在創(chuàng)建組件之前就已經(jīng)調(diào)用,順序在 beforeCreate()前面,也就是說在 setup 里面沒有 this,setup 里沒有對象關(guān)系,不能使用 this
  • import 必須包在 script 里面
  • ref、reactive 都是方法,參數(shù)放到括號里,如:const data = reactive({ count:66})
  • setup 里的方法里調(diào)用參數(shù),不使用 this,直接調(diào)用即可
  • 聲明的數(shù)據(jù)跟函數(shù)別忘了在 return 里面返回
  • reactive 里面使用 computed,調(diào)用本 data 里的數(shù)據(jù)時(shí),也需要寫成 data.count 的樣式
  • computed 里面是一個(gè)匿名函數(shù)
  • 導(dǎo)入子組件流程:
    1. import 引入子組件文件\
    2. 在父組件中 components 中聲明該子組件
    3. 在父組件標(biāo)簽中插入使用
  • setup()參數(shù)
    1. 第一個(gè)參數(shù):props,這個(gè)參數(shù)在 setup 里面是只讀的,如果轉(zhuǎn)成響應(yīng)式的可以百度一下,挺復(fù)雜麻煩的,而且基本也用不上
    2. 第二個(gè)參數(shù):context,里面會(huì)存放沒有在 props 中聲明的其他傳過來的屬性,如:slots,parent,root,emit,refs 等
    3. context 也可以直接在形參處直接解構(gòu)賦值,把對應(yīng)的參數(shù)傳進(jìn)去
  • setup()里面常規(guī)聲明的變量是一個(gè)原生變量,不是響應(yīng)式的,無法直接進(jìn)行操作

常用 API

使用 API 之前,一定要先將對應(yīng)的 API 引入

  • ref
    1. 可以將單個(gè)變量變成響應(yīng)式let num = ref(6)
    2. 在方法中使用時(shí),需要注意該變量在 return 后,在 div 中可以直接用{{num}}的形式使用,但是在 setup 中,如方法中使用時(shí),它是一個(gè) RefImpl 對象的形式,其中值在 value 里面,因此方法中使用時(shí),num.value才是其正確的值
  • reactive、toRefs
    1. reactive 只能聲明一個(gè)對象,通常可以起名為 data(與 export default 中的 data 類似)
    2. reactive 里面值的使用方法就跟對象一樣
    3. 如果想在 div 中直接拿到對象里的所有值,可以將其在 return 的時(shí)候以展開方法的方式進(jìn)行展開,但是需要注意,如果直接展開,那數(shù)據(jù)就會(huì)失去響應(yīng)式
    4. 如果想展開的數(shù)據(jù)也是響應(yīng)式,可以配合 toRefs 使用,toRefs 可以將 return 展開的數(shù)組恢復(fù)成響應(yīng)式,如...toRefs(data)
  • ref 中的數(shù)據(jù)也可以掛在到 reactive 中,但是一般沒啥用,可以直接使用 reactive
  • readonly 將聲明一個(gè)變量將響應(yīng)式的變量轉(zhuǎn)為非響應(yīng)式,如下,num 是響應(yīng)式的變量,num2 就是非響應(yīng)式的,只有操作 num 的時(shí)候值才會(huì)變化且 num2 的值會(huì)跟著一起變化,操作 num2 的時(shí)候,值是不會(huì)變化的
  1. let num = ref(66);
  2. let num2 = readonly(num);
  • isRef 結(jié)合三元運(yùn)算符使用,用作判斷一個(gè)變量是否是響應(yīng)式,如果是則給出一個(gè)輸出,如果不是則給出另一個(gè)輸出,類似的還有 isReadonly,isProxy 等等

計(jì)算屬性 API computed

  • computed()用來創(chuàng)建計(jì)算屬性,返回值是一個(gè) ref 的實(shí)例
  • computed()里如果只有一個(gè)匿名函數(shù),默認(rèn)是 get 方法,如果需要添加 set 方法,則里面是一個(gè)對象

監(jiān)聽器 watch() watchEffect()

  • watchEffect 是默認(rèn)在組件加載的時(shí)候就會(huì)調(diào)用一次(可以通過配置更改執(zhí)行時(shí)機(jī)),后面依賴屬性發(fā)生了變更會(huì)繼續(xù)執(zhí)行
  • watch 可以在使用時(shí)明確指定需要監(jiān)聽的屬性,watchEffect 則是依賴回調(diào)函數(shù)中使用到的屬性
  • watch 指定監(jiān)聽的屬性時(shí),需要往 watch 里面?zhèn)鲄?,而不是傳到?nèi)部的匿名函數(shù)中
  • watch 內(nèi)部的匿名函數(shù)可以接收兩個(gè)參數(shù),第一個(gè)是監(jiān)聽值的新值,第二個(gè)是監(jiān)聽值的舊值
  • watch 監(jiān)聽的屬性如果有多個(gè),可以以數(shù)組的形式批量傳入(匿名函數(shù)中新舊值也是一樣)
  • watch 默認(rèn)需要監(jiān)聽的屬性發(fā)生變更了才會(huì)執(zhí)行,也就是如果監(jiān)聽的屬性沒有發(fā)生變更,默認(rèn)不會(huì)執(zhí)行,如果想讓其在加載的時(shí)候先執(zhí)行一次可以在 watch 的參數(shù)最后面加上一個(gè){immediate.true}
  • watch 指定監(jiān)聽的屬性傳參時(shí),可以傳入 ref、reactive 類型監(jiān)聽整個(gè)對象,如果要監(jiān)聽對象里的某個(gè)值需要用一個(gè)匿名函數(shù)把對象里需要監(jiān)聽的值返回出來使用,監(jiān)聽里面多個(gè)值的時(shí)候就是一個(gè)匿名函數(shù)的數(shù)組

生命周期

  • 聲明周期引入的時(shí)候前面都會(huì)帶一個(gè) on
  • 由于在 beforeCreate 跟 created 之前 setup 就已經(jīng)創(chuàng)建了,因此 setup 里面沒有這兩個(gè)聲明周期,setup 可以直接替代這兩個(gè)聲明周期

provide 與 inject

  • provide 與 inject 在單獨(dú)使用的時(shí)候,需要爺組件在 data 里也聲明一個(gè)變量,然后把變量放到 provide 里面?zhèn)鹘o孫組件,不然只用 provide 傳給孫組件,爺組件是不能用這個(gè)變量的,爺組件的數(shù)據(jù)跟孫組件的數(shù)據(jù)不是響應(yīng)式的
  • 在 setup 里面 provide 與 inject 是響應(yīng)式的

router 與 vuex

  • route 跟 router 是從 vue-router 里面引入的
  • 引入的兩個(gè)分別是 useRoute 和 useRouter 兩個(gè)方法
  • vuex 是從 vuex 里引入的,但是引入的是 useStore 狀態(tài)管理對象的方法
  • 引入以后賦值給一個(gè)變量,就可以正常的把變量當(dāng)做 route、 router、store 使用了
  • 使用狀態(tài)管理里面的數(shù)據(jù)的時(shí)候,可以把 store 返回,也可以用$store 直接使用
批改老師:PHPzPHPz

批改狀態(tài):合格

老師批語:
本博文版權(quán)歸博主所有,轉(zhuǎn)載請注明地址!如有侵權(quán)、違法,請聯(lián)系admin@php.cn舉報(bào)處理!
全部評論 文明上網(wǎng)理性發(fā)言,請遵守新聞評論服務(wù)協(xié)議
0條評論
作者最新博文
關(guān)于我們 免責(zé)申明 意見反饋 講師合作 廣告合作 最新更新
php中文網(wǎng):公益在線php培訓(xùn),幫助PHP學(xué)習(xí)者快速成長!
關(guān)注服務(wù)號 技術(shù)交流群
PHP中文網(wǎng)訂閱號
每天精選資源文章推送
PHP中文網(wǎng)APP
隨時(shí)隨地碎片化學(xué)習(xí)
PHP中文網(wǎng)抖音號
發(fā)現(xiàn)有趣的

Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號

  • 登錄PHP中文網(wǎng),和優(yōu)秀的人一起學(xué)習(xí)!
    全站2000+教程免費(fèi)學(xué)