久久精品国产99国产精品免费看_中文成人在线_日本在线播放视频_精品国产一区二区三区在线观看

Vue3 composition(組合式)API詳解

VUE3中關(guān)于組合式API的詳解

什么是Vue3的組合式 API?

組合式 API 是一系列 API 的集合,使我們可以使用函數(shù)而不是聲明選項(xiàng)的方式書寫 Vue 組件。它是一個(gè)概括性的術(shù)語,涵蓋了以下方面的 API:

  • 響應(yīng)性 API:例如ref()reactive(),使我們可以直接創(chuàng)建響應(yīng)式狀態(tài)、計(jì)算屬性和偵聽器。
  • 生命周期鉤子:例如onMounted()onUnmounted(),使我們可以在組件各個(gè)生命周期階段添加邏輯。
  • 依賴注入:例如provide()inject(),使我們可以在使用響應(yīng)性 API 時(shí),利用 Vue 的依賴注入系統(tǒng)。

在 Vue 3 中,組合式 API 基本上都會(huì)配合<script setup>語法在單文件組件中使用。

Vue3 composition(組合式)API詳解
Vue3 composition(組合式)API詳解

組合式api所做的

組合式api所實(shí)現(xiàn)就是將業(yè)務(wù)流程集中化,而不是碎片化,業(yè)務(wù)流程隨著時(shí)間滾動(dòng)。形成一個(gè)時(shí)間流式的業(yè)務(wù)流。

為什么要有組合式 API?

更好的邏輯復(fù)用

組合式 API 最基本的優(yōu)勢(shì)是它使我們能夠通過組合函數(shù)來實(shí)現(xiàn)更加簡(jiǎn)潔高效的邏輯復(fù)用。在選項(xiàng)式 API 中我們主要的邏輯復(fù)用機(jī)制是 mixins,而組合式 API 解決了?mixins 的所有缺陷。

組合式 API 提供的邏輯復(fù)用能力孵化了一些非常棒的社區(qū)項(xiàng)目,比如?VueUse,一個(gè)不斷成長(zhǎng)的工具型組合式函數(shù)集合。組合式 API 還為其他第三方狀態(tài)管理庫(kù)與 Vue 的響應(yīng)式系統(tǒng)之間的集成提供了一套簡(jiǎn)潔清晰的機(jī)制,例如?RxJS。

更靈活的代碼組織

許多用戶喜歡選項(xiàng)式 API 的原因是因?yàn)樗谀J(rèn)情況下就能夠讓人寫出有組織的代碼:大部分代碼都自然地被放進(jìn)了對(duì)應(yīng)的選項(xiàng)里。然而,選項(xiàng)式 API 在單個(gè)組件的邏輯復(fù)雜到一定程度時(shí),會(huì)面臨一些無法忽視的限制。這些限制主要體現(xiàn)在需要處理多個(gè)邏輯關(guān)注點(diǎn)的組件中,這是我們?cè)谠S多 Vue 2 的實(shí)際案例中所觀察到的。

我們以 Vue CLI GUI 中的文件瀏覽器組件為例:這個(gè)組件承擔(dān)了以下幾個(gè)邏輯關(guān)注點(diǎn):

  • 追蹤當(dāng)前文件夾的狀態(tài),展示其內(nèi)容
  • 處理文件夾的相關(guān)操作 (打開、關(guān)閉和刷新)
  • 支持創(chuàng)建新文件夾
  • 可以切換到只展示收藏的文件夾
  • 可以開啟對(duì)隱藏文件夾的展示
  • 處理當(dāng)前工作目錄中的變更

你可以看到,處理相同邏輯關(guān)注點(diǎn)的代碼被強(qiáng)制拆分在了不同的選項(xiàng)中,位于文件的不同部分。在一個(gè)幾百行的大組件中,要讀懂代碼中的一個(gè)邏輯關(guān)注點(diǎn),需要在文件中反復(fù)上下滾動(dòng),這并不理想。

另外,如果我們想要將一個(gè)邏輯關(guān)注點(diǎn)抽取重構(gòu)到一個(gè)可復(fù)用的工具函數(shù)中,需要從文件的多個(gè)不同部分找到所需的正確片段。

而如果用組合式 API 重構(gòu)這個(gè)組件,將會(huì)變成下面右邊這樣:

Vue3 composition(組合式)API詳解

響應(yīng)式(核心類)

1. ref()–定義響應(yīng)式數(shù)據(jù)

ref()接受一個(gè)基本數(shù)據(jù)類型的參數(shù),返回一個(gè)響應(yīng)式的、可更改的 ref 對(duì)象,此對(duì)象只有一個(gè)指向其內(nèi)部值的屬性?.value。如果將一個(gè)對(duì)象賦值給 ref,那么這個(gè)對(duì)象將通過?reactive()?轉(zhuǎn)為具有深層次響應(yīng)式的對(duì)象。

Vue3 composition(組合式)API詳解

2. reactive()–定義響應(yīng)式數(shù)據(jù)

reactive()接受一個(gè)對(duì)象,包括json數(shù)據(jù)和數(shù)組都可以,返回一個(gè)對(duì)象的響應(yīng)式代理。

3. computed()–計(jì)算屬性

computed()接受一個(gè) getter 函數(shù),返回一個(gè)只讀的響應(yīng)式?ref對(duì)象。該 ref 通過?.value?暴露 getter 函數(shù)的返回值。它也可以接受一個(gè)帶有?get?和?set?函數(shù)的對(duì)象來創(chuàng)建一個(gè)可寫的 ref 對(duì)象。

4.watch()–監(jiān)聽

watch()監(jiān)聽一個(gè)或多個(gè)響應(yīng)式數(shù)據(jù)源,并在數(shù)據(jù)源變化時(shí)調(diào)用所給的回調(diào)函數(shù)。默認(rèn)是懶監(jiān)聽,即源發(fā)生變化時(shí)才執(zhí)行回調(diào)函數(shù)。函數(shù)接受三個(gè)參數(shù):

  1. 監(jiān)聽器的源數(shù)據(jù)(一個(gè)函數(shù),返回一個(gè)值。一個(gè)ref。一個(gè)響應(yīng)式對(duì)象?;蛞陨先N類型組成的數(shù)組)
  2. 第二個(gè)參數(shù)是在發(fā)生變化時(shí)要調(diào)用的回調(diào)函數(shù)。接受三個(gè)參數(shù):新值、舊值,以及一個(gè)用于注冊(cè)副作用清理的回調(diào)函數(shù)
  3. 第三個(gè)可選的參數(shù)是一個(gè)對(duì)象(對(duì)象屬性支持 immediate,deep,flush,onTrack / onTrigger

5. watchEffect()

watchEffect()立即運(yùn)行一個(gè)函數(shù),同時(shí)響應(yīng)式地追蹤其依賴,并在依賴更改時(shí)重新執(zhí)行。

  • 第一個(gè)參數(shù)就是要運(yùn)行的副作用函數(shù)
  • 第二個(gè)參數(shù)就是一個(gè)可選的對(duì)象,跟watch第三個(gè)參數(shù)一致

watch() 跟 watchEffect()區(qū)別

  • 1. watch是惰性執(zhí)行,也就是只有監(jiān)聽的值發(fā)生變化的時(shí)候才會(huì)執(zhí)行,但是watchEffect不同,每次代碼加載watchEffect都會(huì)執(zhí)行。
  • 2. watch?會(huì)明確監(jiān)聽某一個(gè)數(shù)據(jù),而?watchEffect?則是監(jiān)聽回調(diào)函數(shù)中響應(yīng)數(shù)據(jù)。
  • 3. watch可以訪問之前的值,而watchEffect不可以。

注意

1、setup是vue3中的一個(gè)全新的配置項(xiàng),值為一個(gè)函數(shù);

2、setup是所有CompositionAPI(組合API)的基礎(chǔ),組件中所用到的數(shù)據(jù)、方法等都需要在setup中進(jìn)行配置;

setup中的兩種返回值

返回一個(gè)對(duì)象,對(duì)象中的屬性、方法,在模板中均可直接使用(重點(diǎn)

export default {
  name: 'App',
  setup(){
    // 數(shù)據(jù)
    let name = '張三'
    let age = '18'
 
    // 方法
    function sayHello(){
      alert(`我叫${name},我${age}歲了,你好啊`)
    }
 
    // 第一種return,返回一個(gè)對(duì)象
    return{
      name,
      age,
      sayHello
    }
  }
}

返回一個(gè)渲染函數(shù):可以自定義渲染內(nèi)容(了解)

export default {
  name: 'App',
  setup(){
    // 數(shù)據(jù)
    let name = '張三'
    let age = '18'
 
    // 方法
    function sayHello(){
      alert(`我叫${name},我${age}歲了,你好啊`)
    }
 
    // 第二種return,返回一個(gè)渲染函數(shù)
    return ()=> { return h('h1','尚硅谷') }
 
    // 簡(jiǎn)寫
    // return ()=> h('h1','尚硅谷') 
  }
}

setup不能是一個(gè)async函數(shù),因?yàn)榉祷刂挡辉偈莚eturn的對(duì)象,而是promise,模板看不到return對(duì)象中的屬性;

參考文章

??
Npcink上的部份代碼及教程來源于互聯(lián)網(wǎng),僅供網(wǎng)友學(xué)習(xí)交流,若您喜歡本文可附上原文鏈接隨意轉(zhuǎn)載。
無意侵害您的權(quán)益,請(qǐng)發(fā)送郵件至 1355471563#qq.com 或點(diǎn)擊右側(cè) 私信:Muze 反饋,我們將盡快處理。
?
購(gòu)物車
優(yōu)惠劵
搜索
久久精品国产99国产精品免费看_中文成人在线_日本在线播放视频_精品国产一区二区三区在线观看

    9000px;">

      在线免费观看av的网站| а√中文在线资源库| 午夜精品一二三区| 日韩久久久久久久久久| 男人的天堂av网站| 男人天堂av在线播放| 免费在线观看国产精品| 久久久久久久毛片| 久久久精品人妻无码专区| 精品欧美一区二区久久久久| 国产又粗又猛又黄| 国语对白一区二区| 黄色在线观看av| 久久久国产高清| 久久久久久久九九九九| 久久亚洲成人av| 欧美成人精品一区二区综合免费 | 亚洲一区二区三区网站 | 亚洲天堂五月天| 亚洲精品一区二区三区四区| 亚洲精品天堂网| 亚洲一区二区三区四区五区六区| 亚洲三级在线观看视频| 亚洲综合五月天婷婷丁香| 911美女片黄在线观看游戏| 91精品无人成人www| 99re这里只有精品在线| 国产 日韩 欧美 综合| 国产成人精品视频免费| 国产欧美一区二区三区在线看蜜臂| 国产调教在线观看| 久久国产波多野结衣| 蜜桃视频污在线观看| 日本国产在线视频| 四季av综合网站| 在线观看一区二区三区视频| 亚洲天堂av网站| www.com久久久| 国产偷人妻精品一区二区在线| 国产又黄又大又爽| 免费在线观看黄网站| 日韩av无码一区二区三区不卡| 四虎精品永久在线| 伊人中文字幕在线观看| 亚洲视频在线a| 国产 日韩 欧美 在线| 国模无码视频一区| 欧美日韩国产精品综合| 天天综合网久久| 最近中文字幕免费视频| aaa级黄色片| 国产在线一区视频| 欧美一级xxxx| 一区二区国产精品精华液| 亚洲一级免费观看| 国产免费黄色录像| 免费无码一区二区三区| 午夜精品久久久久久久蜜桃| 亚洲一区二区三区蜜桃| 国产精品密蕾丝袜| 欧美激情精品久久| 在线观看日本中文字幕| 91网站免费视频| 国产又爽又黄又嫩又猛又粗 | 中文字幕人妻一区二区在线视频| 91蝌蚪视频在线观看| 国产网站无遮挡| 青青操国产视频| 最近免费中文字幕大全免费版视频| www.av免费| 久久久免费看片| 一区二区三区久久久久| 丰满少妇高潮在线观看| 久草综合在线视频| 午夜视频www| www日本高清视频| 久久视频免费在线观看| 亚洲 欧美 日韩系列| www天堂在线| 久久久久亚洲AV成人网人人小说 | 亚洲国产成人一区二区| 国产高清免费观看| 欧美精品色哟哟| 亚洲精品成人在线视频| 国产手机在线观看| 四虎成人精品永久免费av| 91精品国自产在线| 久久久精品视频国产| 真实新婚偷拍xxxxx| 国产毛片一区二区三区va在线| 欧美精品日韩在线| 亚洲综合一二三| 久久精品性爱视频| 中国xxxx性xxxx产国| 国产精品一级二级| 少妇一级淫片免费放中国| 91成人精品一区二区| 久久久91视频| 亚洲精品国产久| 黑人乱码一区二区三区av| 亚洲av成人精品一区二区三区 | 国产一区二区小视频| 特级丰满少妇一级aaaa爱毛片| av无码精品一区二区三区宅噜噜| 密臀av一区二区三区| 亚洲精品免费一区亚洲精品免费精品一区 | 一区二区三区韩国| 国产毛片久久久久| 香蕉成人在线视频| 国产视频精品免费| 性xxxfllreexxx少妇| 国产艳妇疯狂做爰视频| 亚洲成人第一区| 国产在线视频第一页| 中文字幕有码无码人妻av蜜桃| 黄色一级大片在线免费看国产| 这里只有精品在线观看视频| 精品人妻一区二区三区蜜桃视频| 亚洲av成人无码久久精品| 国产人妻精品一区二区三区| 尤物视频在线观看国产| 黄色大片网站在线观看| 亚洲国产第一区| 奴色虐av一区二区三区| av 一区二区三区| 色偷偷在线观看| 国产三级国产精品| 制服.丝袜.亚洲.中文.综合懂| 久草手机视频在线观看| 2018国产精品| 色综合五月婷婷| 国产日韩在线观看一区| 亚洲精品第二页| 人人爽人人爽人人片| 国产精品成人国产乱| 在线观看岛国av| 免费欧美一级片| 国产999久久久| 中文写幕一区二区三区免费观成熟| 九九视频在线观看| 91福利免费视频| 天天操中文字幕| 九九热在线视频播放| 91 在线视频观看| 无码精品人妻一区二区| 精品国产乱码久久久久久鸭王1 | 亚洲精品久久久久久久久久久久久久| 免费的av网站| 国产刺激高潮av| 中文字幕视频一区二区| 日本三级一区二区三区| 国产系列精品av| 亚洲香蕉中文网| 五月婷婷之综合激情| 蜜桃传媒一区二区亚洲| 丰满熟女一区二区三区| 中文字幕激情小说| 日韩黄色片网站| 激情五月激情综合| www.久久精品视频| 中文字幕理论片| 色婷婷免费视频| 久久综合桃花网| 国产精品一区二区亚洲| 亚洲最大成人av| 一区二区精品视频在线观看| 欧美日韩一级黄色片| 国产一区二区在线观看免费视频| 91人妻一区二区| 中文字幕 国产精品| 日韩一区二区三区四区视频| 久久激情免费视频| 国产精品久久久久毛片| 91av手机在线| 中文字幕一区二区人妻电影| 少妇一级淫片免费看| 男人的天堂a在线| 精品人妻一区二区色欲产成人| 成人欧美一区二区三区黑人一| 亚洲精品久久久久久国 | 亚洲熟妇无码久久精品| 午夜激情小视频| 日韩免费不卡视频| 免费黄色一级网站| 黄色大片网站在线观看| 国产精品理论在线| jlzzjlzz亚洲女人18| 亚洲熟女乱综合一区二区三区| 亚州国产精品视频| 天堂网在线观看视频| 欧美h在线观看| 久久久久亚洲av成人网人人软件| 国产亚洲精品久久777777| 国产成人av免费在线观看| aa片在线观看视频在线播放| 亚洲一级片在线播放| 亚洲国产精品18久久久久久| 在线播放精品视频| 五月天av网站| 天堂网一区二区三区|