vue3中的Composition API

vue2中,我們會在methods缸逃,computed针饥,watch,data中等等定義屬性和方法需频,共同處理頁面邏輯丁眼,我們稱這種方式為Options API。相信用過的都知道昭殉,方便是挺方便苞七,不過缺點也很明顯藐守,當(dāng)項目越來越大,很可能一個methods下就有二三十個方法蹂风, 還得確切地知道方法中可以訪問哪些屬性以及this關(guān)鍵字的行為卢厂,維護起來就十分麻煩了。Composition API(組合API)就是解決這個問題而生的惠啄。

一慎恒、好處


上面這張圖很明顯的說明了它的優(yōu)點,vue3 Composition API 中撵渡,我們的代碼是根據(jù)邏輯功能來組織的融柬,一個功能所定義的所有api會放在一起(更加的高內(nèi)聚,低耦合)趋距,這樣做粒氧,即使項目很大,功能很多棚品,我們都能快速的定位到這個功能所用到的所有API靠欢,而不像vue2 Options API 中一個功能所用到的API都是分散的。Vue核心團隊將組件Composition API描述為“一套附加的铜跑、基于函數(shù)的api门怪,允許靈活地組合組件邏輯”。下面我們來看個例子:

可以很明顯的看到锅纺,vue3中在setup再也不用考慮各種this指向了掷空,也不需要在data中去定義然后methods去使用了,自由度更高囤锉、更靈活了
看來上面的例子坦弟,你可能很感興趣上面setup這個函數(shù)了:

簡而言之,它只是一個函數(shù)官地,它將屬性和函數(shù)返回到模板酿傍。 我們在這里聲明所有的響應(yīng)式屬性、計算屬性驱入、觀察者和生命周期鉤子赤炒,然后返回它們,以便它們可以在模板中使用亏较。 我們沒有在setup函數(shù)返回的內(nèi)容將在模板中不可用莺褒,還有以下幾個特點 :
1、由于在執(zhí)行 setup函數(shù)的時候雪情,還沒有執(zhí)行 Created 生命周期方法遵岩,所以在 setup 函數(shù)中,無法使用 data 和 methods 的變量和方法(首先創(chuàng)建組件實例巡通,然后初始化 props 尘执,緊接著就調(diào)用setup 函數(shù)舍哄。從生命周期的角度看,它會在 beforeCreate 鉤子之前被調(diào)用)
2正卧、由于我們不能在 setup函數(shù)中使用 data 和 methods蠢熄,所以 Vue 為了避免我們錯誤的使用跪解,直接將 setup函數(shù)中的this修改成了 undefined
3炉旷、setup函數(shù)只能是同步的不能是異步的

二谜慌、新的api

compositon-api提供了一下幾個函數(shù)
1.reactive
2.watchEffect
3.computed
4.ref
5.toRefs

官網(wǎng)介紹:可以用來為源響應(yīng)式對象上的 property 性創(chuàng)建一個 ref然后可以將 ref 傳遞出去套腹,從而保持對其源 property 的響應(yīng)式連接


通過上面這個例子不難看出,通過toRefs轉(zhuǎn)化過的對象端考,有了一個ref對象才有的__v_isRef: true屬性图仓,toRefs將reactive定義的對象變成了一個響應(yīng)式對象罐盔,這也正是toRefs的作用。
使用場景:使用父組件傳遞的props數(shù)據(jù)時救崔,要引用props的某個屬性且要保持響應(yīng)式(能這樣使用的原因是因為toRefs創(chuàng)建的對象是對象引用而不是原始數(shù)據(jù)的拷貝惶看,改變現(xiàn)有對象會同時改變原有對象)。
小知識:

看過vue3代碼的同學(xué)對于這種...toRefs(persen)的應(yīng)該不陌生六孵,這種寫法主要是用了ES6解構(gòu)賦值的思想纬黎,按照圖上來說,persen對象被解構(gòu)出來劫窒,變成了屬性name和age本今,界面中調(diào)用時只需使用{{name}}和{{age}}而不用使用persen.name訪問了,極其的方便主巍。
經(jīng)過以上了解冠息,在setup中定義變量時,為了使代碼可讀性更高孕索,推薦使用reactive+toRefs定義變量(reactive此時的作用就類似于vue2中的data了)

6.生命周期的hooks

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末逛艰,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子搞旭,更是在濱河造成了極大的恐慌散怖,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件选脊,死亡現(xiàn)場離奇詭異杭抠,居然都是意外死亡,警方通過查閱死者的電腦和手機恳啥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門偏灿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人钝的,你說我怎么就攤上這事翁垂∶猓” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵沿猜,是天一觀的道長枚荣。 經(jīng)常有香客問我,道長啼肩,這世上最難降的妖魔是什么橄妆? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮祈坠,結(jié)果婚禮上害碾,老公的妹妹穿的比我還像新娘。我一直安慰自己赦拘,他們只是感情好慌随,可當(dāng)我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著躺同,像睡著了一般阁猜。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蹋艺,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天剃袍,我揣著相機與錄音,去河邊找鬼车海。 笑死笛园,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的侍芝。 我是一名探鬼主播研铆,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼州叠!你這毒婦竟也來了棵红?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤咧栗,失蹤者是張志新(化名)和其女友劉穎逆甜,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體致板,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡交煞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了斟或。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片素征。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出御毅,到底是詐尸還是另有隱情根欧,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布端蛆,位于F島的核電站凤粗,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏今豆。R本人自食惡果不足惜嫌拣,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望晚凿。 院中可真熱鬧亭罪,春花似錦瘦馍、人聲如沸歼秽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽燥筷。三九已至,卻和暖如春院崇,著一層夾襖步出監(jiān)牢的瞬間肆氓,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工底瓣, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留谢揪,地道東北人。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓捐凭,卻偏偏與公主長得像拨扶,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子茁肠,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容