久久精品国产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国产精品免费看_中文成人在线_日本在线播放视频_精品国产一区二区三区在线观看

    9000px;">

      中文无字幕一区二区三区| eeuss国产一区二区三区| 日韩一卡二卡三卡四卡| 一本到不卡免费一区二区| 国产精品18久久久久久久久久久久| 亚洲午夜在线电影| 亚洲猫色日本管| 亚洲男人天堂一区| 亚洲精品高清在线| 亚洲丝袜制服诱惑| 国产精品不卡在线| 18成人在线观看| 亚洲伦理在线精品| 亚洲男帅同性gay1069| 一区二区高清免费观看影视大全| 亚洲天堂中文字幕| 一区二区三区不卡在线观看| 一区二区三区欧美| 亚洲丶国产丶欧美一区二区三区| 一区二区三区国产精华| 亚洲成人动漫av| 三级欧美在线一区| 蜜臀精品一区二区三区在线观看| 看电影不卡的网站| 国产成人啪免费观看软件| 国产精品影音先锋| 国产成人精品影视| 色综合天天综合在线视频| 欧美性猛交xxxx乱大交退制版| 欧美在线free| 在线综合亚洲欧美在线视频| 亚洲精品一区二区三区影院| 久久精品网站免费观看| 成人欧美一区二区三区小说| 一区二区三区精品视频在线| 麻豆91精品视频| 成人av免费在线播放| 欧美亚洲一区三区| 精品动漫一区二区三区在线观看| 国产精品天干天干在观线| 国产精品人成在线观看免费 | 日韩三级av在线播放| 精品91自产拍在线观看一区| 中文字幕欧美激情| 亚洲韩国一区二区三区| 国产一区二区调教| 欧美性生交片4| 国产三级欧美三级日产三级99| 亚洲激情图片一区| 国产一区二区三区四区在线观看| 欧美性一二三区| 在线观看日产精品| 一区二区三区在线观看欧美| 国产精品视频免费| 中文字幕av一区二区三区免费看| 欧美激情综合在线| 石原莉奈一区二区三区在线观看| 成人av网址在线| 精品美女被调教视频大全网站| 91麻豆精品国产91久久久更新时间 | 亚洲综合清纯丝袜自拍| 美腿丝袜亚洲一区| 91色视频在线| 国产亚洲美州欧州综合国 | 国内久久精品视频| 欧美在线你懂的| 亚洲欧美日韩国产综合| 国产精品亚洲一区二区三区妖精 | 中文字幕综合网| 精品一区免费av| 欧美高清dvd| 亚洲一区在线观看视频| 成人av电影在线播放| 精品理论电影在线观看 | 久久久国产精华| 蜜桃视频在线观看一区二区| 欧洲亚洲国产日韩| 亚洲色图在线看| 成人免费的视频| 久久美女艺术照精彩视频福利播放| 免费在线观看视频一区| 91精品午夜视频| 日韩高清欧美激情| 91精品国产丝袜白色高跟鞋| 亚洲国产综合在线| 91精品国产综合久久蜜臀 | 日韩女优毛片在线| 欧美日韩高清一区二区不卡| av色综合久久天堂av综合| 樱桃国产成人精品视频| 欧美电影在线免费观看| 久久99久久久久| 一二三四社区欧美黄| 91精品国产91热久久久做人人| 久久疯狂做爰流白浆xx| 久久99精品一区二区三区| 国产乱妇无码大片在线观看| 亚洲va韩国va欧美va精品| 99精品偷自拍| 国产精品久久久久久户外露出 | 国产一区二区三区国产| 精品国产乱码久久久久久图片| 精品一区二区三区蜜桃| 久久久久久免费| 99精品视频在线观看免费| 夜夜精品视频一区二区| 在线电影欧美成精品| 精品在线亚洲视频| 中文字幕电影一区| 99久久精品国产导航| 亚洲一区二区在线观看视频| 91精品国产综合久久久久久漫画 | 国产精品高潮呻吟久久| 91国产福利在线| 热久久国产精品| 国产欧美一区二区精品忘忧草| 色一情一乱一乱一91av| 日本网站在线观看一区二区三区 | 亚洲精品一二三| 日韩欧美在线影院| voyeur盗摄精品| 奇米一区二区三区av| 国产精品黄色在线观看| 欧美福利电影网| 成人app软件下载大全免费| 亚洲大型综合色站| 日本一区二区三区国色天香 | 舔着乳尖日韩一区| 国产精品毛片久久久久久| 777欧美精品| 97久久超碰国产精品电影| 日本欧美久久久久免费播放网| 国产精品视频一二三区| 欧美一级免费观看| 色综合久久久久久久久| 国产一区不卡视频| 免费在线看成人av| 夜夜亚洲天天久久| 国产精品久久久久久户外露出| 欧美电影免费观看高清完整版在线 | 91麻豆精品国产自产在线观看一区 | 97久久精品人人澡人人爽| 美女视频黄频大全不卡视频在线播放| 亚洲精品亚洲人成人网| 久久久久久久电影| 欧美成va人片在线观看| 欧美熟乱第一页| 91老司机福利 在线| 国产精品一区二区x88av| 亚洲va在线va天堂| 亚洲一区二区综合| 亚洲欧美激情插| 国产精品国产三级国产普通话99 | 三级在线观看一区二区| 亚洲欧美日韩系列| 国产精品久久毛片| 国产欧美一区二区三区在线看蜜臀| 精品国产成人系列| 精品国产网站在线观看| 日韩欧美国产系列| 日韩视频一区二区| 日韩一级大片在线观看| 日韩欧美国产高清| 精品免费国产二区三区| 日韩免费在线观看| 欧美大片在线观看一区| 欧美大度的电影原声| www久久精品| 国产农村妇女精品| 国产精品久久久久久久久晋中| 亚洲欧洲成人自拍| 亚洲综合一区二区| 三级欧美韩日大片在线看| 免费视频一区二区| 久久精品国产77777蜜臀| 国产在线播放一区三区四| 国产精品亚洲午夜一区二区三区| 不卡av电影在线播放| 色婷婷狠狠综合| 欧美日韩中文字幕一区| 欧美一区国产二区| 2020国产成人综合网| 国产精品污网站| 亚洲国产一区在线观看| 久久国产精品无码网站| 成人性生交大合| 欧美性极品少妇| 日韩一区二区影院| 欧美激情在线一区二区| 亚洲小说春色综合另类电影| 青草国产精品久久久久久| 国产成人免费高清| 欧美三片在线视频观看 | 亚洲最新视频在线观看| 五月婷婷色综合| 国产真实乱偷精品视频免| 不卡视频免费播放| 日韩色在线观看| 亚洲品质自拍视频网站| 美女尤物国产一区|