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

Vue3 composition(組合式)API詳解

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

什么是Vue3的組合式 API?

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

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

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

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ì)是它使我們能夠通過(guò)組合函數(shù)來(lái)實(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

更靈活的代碼組織

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

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

  • 追蹤當(dāng)前文件夾的狀態(tài),展示其內(nèi)容
  • 處理文件夾的相關(guān)操作 (打開(kāi)、關(guān)閉和刷新)
  • 支持創(chuàng)建新文件夾
  • 可以切換到只展示收藏的文件夾
  • 可以開(kāi)啟對(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)式(核心類(lèi))

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

ref()接受一個(gè)基本數(shù)據(jù)類(lèi)型的參數(shù),返回一個(gè)響應(yīng)式的、可更改的 ref 對(duì)象,此對(duì)象只有一個(gè)指向其內(nèi)部值的屬性?.value。如果將一個(gè)對(duì)象賦值給 ref,那么這個(gè)對(duì)象將通過(guò)?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 通過(guò)?.value?暴露 getter 函數(shù)的返回值。它也可以接受一個(gè)帶有?get?和?set?函數(shù)的對(duì)象來(lái)創(chuàng)建一個(gè)可寫(xiě)的 ref 對(duì)象。

4.watch()--監(jiān)聽(tīng)

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

  1. 監(jiān)聽(tīng)器的源數(shù)據(jù)(一個(gè)函數(shù),返回一個(gè)值。一個(gè)ref。一個(gè)響應(yīng)式對(duì)象。或以上三種類(lèi)型組成的數(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)式地追蹤其依賴(lài),并在依賴(lài)更改時(shí)重新執(zhí)行。

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

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

  • 1. watch是惰性執(zhí)行,也就是只有監(jiān)聽(tīng)的值發(fā)生變化的時(shí)候才會(huì)執(zhí)行,但是watchEffect不同,每次代碼加載watchEffect都會(huì)執(zhí)行。
  • 2. watch?會(huì)明確監(jiān)聽(tīng)某一個(gè)數(shù)據(jù),而?watchEffect?則是監(jiān)聽(tīng)回調(diào)函數(shù)中響應(yīng)數(shù)據(jù)。
  • 3. watch可以訪(fǎng)問(wèn)之前的值,而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)寫(xiě)
    // return ()=> h('h1','尚硅谷') 
  }
}

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

參考文章

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

    日韩午夜在线视频| 欧美激情影音先锋| 亚洲第一综合天堂另类专| 免费久久99精品国产自| 一区二区免费在线观看| 国内久久精品| 欧美日韩精品| 久久一区精品| 午夜在线成人av| 欧美视频中文一区二区三区在线观看| 亚洲一级片在线看| 亚洲三级视频在线观看| 另类图片国产| 午夜精品久久久久久久99水蜜桃 | 韩日视频一区| 欧美精品一区二区视频 | 国产精品久久久| 欧美大片免费观看在线观看网站推荐| 亚洲欧美精品中文字幕在线| 最新国产の精品合集bt伙计| 欧美成人精精品一区二区频| 亚洲免费视频网站| 一区二区三区日韩精品视频| 黄色日韩网站视频| 国产乱码精品| 国产精品亚洲аv天堂网| 欧美日韩视频在线| 欧美精品久久99| 免费一级欧美片在线播放| 久久精品在线| 久久久久久网址| 久久亚洲欧美国产精品乐播| 欧美中文在线字幕| 在线成人性视频| 狠狠色丁香久久婷婷综合丁香 | 欧美日韩亚洲一区二区三区四区| 久久伊伊香蕉| 欧美激情精品久久久久久大尺度| 在线综合亚洲| 夜夜爽av福利精品导航| 国产精品不卡在线| 国产精品日韩专区| 国产精品久久久久久亚洲毛片| 欧美精品免费看| 欧美日韩一区成人| 欧美系列亚洲系列| 国产私拍一区| 亚洲大片精品永久免费| 亚洲精品国产欧美| 一本高清dvd不卡在线观看| 一本大道av伊人久久综合| 亚洲愉拍自拍另类高清精品| 欧美一区在线看| 久久综合图片| 欧美色图一区二区三区| 国产精品狠色婷| 韩国三级电影一区二区| 亚洲黄色在线观看| 亚洲免费影院| 欧美成人蜜桃| 国产精品亚洲аv天堂网| 在线播放中文一区| 国产精品99久久久久久久女警| 香蕉久久夜色精品| 这里只有精品丝袜| 欧美在线看片a免费观看| 麻豆国产va免费精品高清在线| 欧美日韩精品免费看| 国产日韩一区在线| 99re这里只有精品6| 亚洲免费视频在线观看| 免费日韩av电影| 国产乱肥老妇国产一区二 | 久久久国产精品亚洲一区| 亚洲免费网站| 欧美成年人视频网站欧美| 国产精品国产三级国产专播精品人| 国产一级揄自揄精品视频| 日韩一级不卡| 美国十次成人| 国产一区美女| 国内精品久久久久伊人av| 日韩午夜电影av| 老鸭窝毛片一区二区三区| 国产精品视频一区二区高潮| 亚洲精品国产系列| 美女视频黄a大片欧美| 欧美精品1区2区3区| 一区二区视频免费在线观看| 亚洲一二三级电影| 欧美精品麻豆| 亚洲乱码国产乱码精品精天堂| 一本久久综合| 欧美激情按摩| 91久久久久久久久久久久久| 久久亚洲电影| 国产一区二区三区高清| 性欧美videos另类喷潮| 欧美四级在线| 亚洲私人影院| 国产精品亚洲欧美| 亚洲免费综合| 国产亚洲一本大道中文在线| 亚洲欧美网站| 国产视频一区在线观看| 亚洲国产一二三| 欧美va亚洲va国产综合| 在线精品视频一区二区| 美女视频一区免费观看| 亚洲福利在线观看| 欧美极品一区| 亚洲在线免费观看| 国产一区二区三区久久 | 国产色爱av资源综合区| 欧美一区2区三区4区公司二百| 国产乱码精品1区2区3区| 校园激情久久| 影院欧美亚洲| 欧美精品在线免费| 一区二区在线免费观看| 麻豆av福利av久久av| 亚洲精品在线视频观看| 欧美喷水视频| 亚洲国产精品一区| 欧美电影免费观看高清完整版| 亚洲精品免费在线观看| 欧美日韩精品免费看| 亚洲男人第一网站| 国产一区导航| 欧美精品 日韩| 亚洲欧美视频在线观看视频| 国产一区二区三区四区hd| 欧美高清视频在线观看| 韩国一区二区在线观看| 免费国产一区二区| 99国产精品一区| 国产在线麻豆精品观看| 欧美日韩亚洲一区二区三区| 欧美一区二区三区男人的天堂 | 久久激情五月丁香伊人| 亚洲欧洲另类| 国产日韩成人精品| 欧美精品久久久久久| 欧美一区二区三区啪啪| 亚洲人久久久| 国内精品美女av在线播放| 欧美日韩大片一区二区三区| 久久精品国产免费| 一个色综合导航| 亚洲电影在线播放| 国产一区二区三区最好精华液 | 亚洲精品午夜精品| 狠狠爱成人网| 国产日韩欧美一区二区| 欧美日韩一区在线| 久久久免费精品视频| 亚洲影视中文字幕| 一本色道久久88亚洲综合88| 在线观看一区| 黄色av一区| 国内成+人亚洲| 国产欧美日韩在线观看| 久久久999精品视频| 亚洲欧美不卡| 亚洲影视九九影院在线观看| 国产精品久久久久毛片大屁完整版 | 久久精品三级| 久久精品在线观看| 久久激情婷婷| 久久久国产精品一区二区三区| 欧美一区二区三区视频在线观看| 一区二区三区精品视频| 一区二区国产日产| 91久久久在线| 国产欧美一区二区三区另类精品 | 国产乱码精品一区二区三区av| 久久久久久久999精品视频| 欧美一区二区网站| 久久gogo国模裸体人体| 久久久999精品| 欧美高清影院| 欧美人与性禽动交情品| 欧美日韩国产精品专区| 欧美日韩伦理在线| 国产精品稀缺呦系列在线| 国产精品视频xxx| 韩日在线一区| 亚洲国产精品悠悠久久琪琪| 亚洲国产精品va在线看黑人| 99re66热这里只有精品4| 在线亚洲欧美| 久久动漫亚洲| 欧美激情第4页| 国产精品久久久久久久午夜| 国产一区二三区| 亚洲精品欧美专区| 性高湖久久久久久久久| 久久一区二区三区四区| 欧美日韩不卡一区| 国产亚洲精品一区二区|