vue3相關(guān)

vue3的生命周期

vue2 vue3 差異比較
beforeCreate setup setup() :開始創(chuàng)建組件之前岛琼,在beforeCreate和created之前執(zhí)行。創(chuàng)建的是data和method
created setup
beforeMount onBeforeMount 組件掛載到節(jié)點(diǎn)上之前執(zhí)行的函數(shù)
mounted onMounted 組件掛載完成后執(zhí)行的函數(shù)
beforeUpdate onBeforeUpdate 組件更新之前執(zhí)行的函數(shù)
updated onUpdated 組件更新完成之后執(zhí)行的函數(shù)
beforeDestroy onBeforeUnmount 卸載之前執(zhí)行的函數(shù)仿滔,相比改名了
destroyed onUnmounted 卸載之后執(zhí)行的函數(shù)
activated onActivated 被包含在中的組件惠毁,會(huì)多出兩個(gè)生命周期鉤子函數(shù)。被激活時(shí)執(zhí)行
deactivated onDeactivated 比如從 A 組件崎页,切換到 B 組件鞠绰,A 組件消失時(shí)執(zhí)行
errorCaptured onErrorCaptured 當(dāng)捕獲一個(gè)來自子孫組件的異常時(shí)激活鉤子函數(shù)
onRenderTracked vue3新增的周期用于開發(fā)調(diào)試使用的
onRenderTriggered vue3新增的周期用于開發(fā)調(diào)試使用的
  • vue2的beforeCreatecreate變成了setup
  • 除了setup外大部分還是vue2的名字,只是在前面加了個(gè)on
  • vue2的destroyedbeforDestroy變成了onUnmounted(尤大的解釋是Unmounted更加語義化飒焦,卸載的意思比vue2的銷毀更加形象)
  • 關(guān)于調(diào)試函數(shù)蜈膨,目前官方文檔也沒有過多講解

vue3的watch的變化和watchEffect()

在vue2里面采用的是一個(gè)對象的形式,然后在里面去監(jiān)聽不同的值牺荠,在vue3已經(jīng)發(fā)生了改變:

import {watch} from 'vue'

watch(a, (newVal, oldVal) => {
    console.log(newVal, '===', oldVal)
})

vue3的watch基礎(chǔ)用法已經(jīng)改變翁巍,想要使用watch,必須先引入休雌,vue3現(xiàn)在的語法類似各類ui框架一樣要按需引入</br>
這里的wacth函數(shù)接收兩個(gè)參數(shù)曙咽,第一個(gè)參數(shù)是我們要檢測的值,第二個(gè)是回調(diào)函數(shù)挑辆,和以前一樣擁有新舊兩個(gè)值</br>
同時(shí),vue3的watch支持同時(shí)監(jiān)聽多個(gè)值孝情,以數(shù)組的形式:

import {watch} from 'vue'

watch([a, b], ([newValA, newValB], [oldValA, oldValB]) => {
    console.log(newValA, newValB, '===', oldValA, oldValB)
})

監(jiān)聽多個(gè)值鱼蝉,對應(yīng)的回調(diào)函數(shù)的形參里的新舊值就也是多個(gè),這樣的監(jiān)聽會(huì)讓我們的業(yè)務(wù)做某些對比判斷的時(shí)候更加的靈活</br>
watchEffect是vue3提出的一個(gè)新的API:

import {watchEffect} from 'vue'
watchEffect(() => console.log(name))

它是一個(gè)方法箫荡,接收一個(gè)回調(diào)函數(shù)魁亦,他不需要去指定監(jiān)聽誰,它會(huì)去自動(dòng)收集依賴羔挡,只要在回調(diào)函數(shù)中使用了的屬性洁奈,在發(fā)生變化的時(shí)候,都會(huì)去觸發(fā)這個(gè)回調(diào)函數(shù)绞灼,這樣就會(huì)變得非常簡單利术,在業(yè)務(wù)中,我們不必去特意的監(jiān)聽某某屬性低矮,而是直接把他寫在其回調(diào)函數(shù)中印叁,就可以自動(dòng)幫我們收集依賴

其它

  • Composition API

    • Compositon API不是一個(gè)api,而是很多個(gè)API組合的一套API,我們統(tǒng)稱為這名字轮蜕,vue2中,我們會(huì)在methods昨悼,computed,watch跃洛,data中等等定義屬性和方法率触,共同處理頁面邏輯,我們稱這種方式為Options API汇竭,這樣的方式在項(xiàng)目過大的時(shí)候我們發(fā)現(xiàn)葱蝗,一個(gè)methods定義數(shù)十個(gè)方法的時(shí)候,還得準(zhǔn)備知道每個(gè)方法的this韩玩,作用垒玲,干嘛的就會(huì)變得非常麻煩,而Composition API就是解決這個(gè)問題的
    • vue3 Composition API中找颓,我們的代碼是根據(jù)邏輯功能來組織的合愈,一個(gè)功能所定義的所有api會(huì)放在一起(更加的高內(nèi)聚,低耦合)击狮,這樣做佛析,即使項(xiàng)目很大,功能很多彪蓬,我們都能快速的定位到這個(gè)功能所用到的所有API
  • createApp()
    vue2中是使用new Vue的方式寸莫,vue3使用createApp的方式,本質(zhì)是沒有太大的區(qū)別档冬,但是呢膘茎,在之前我們每次注冊一些全局的組建,mixin酷誓,plugins披坏,prototype等,都會(huì)是這樣的方式盐数,Vue.mixin(...xxx)這樣的方式棒拂,會(huì)造成,全局只有一個(gè)app的實(shí)例玫氢,這樣就會(huì)造成實(shí)例污染帚屉,而在vue3中,createApp會(huì)返回一個(gè)全新的app漾峡,可以很好的避免這個(gè)問題

  • Vue3如何注冊全局組件

    app.component('componentName', component)
  • Vue3如何注冊自定義指令
/** v-snine */
app.directive('snine', {
  inserted: function (el) {
    el.snine()
  },
})
  • Vue3如何全局混入
const app = createApp(App)
app.mixin({
  beforeCreate() {
    console.log('我是全局mixin')
  },
})
  • Vue3如何全局掛載屬性和方法
const app = createApp(App)
    
// 全局ctx(this) 上掛載 $axios 需要掛載在globalProperties
app.config.globalProperties.$axios = axios
  • Vue3已經(jīng)移除了filter

  • Vue2和Vue3的生命周期可以混用

  • Vue3中可以使用vue2的寫法

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末攻旦,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子生逸,更是在濱河造成了極大的恐慌敬特,老刑警劉巖掰邢,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異伟阔,居然都是意外死亡辣之,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進(jìn)店門皱炉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來怀估,“玉大人,你說我怎么就攤上這事合搅《嗖螅” “怎么了?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵灾部,是天一觀的道長康铭。 經(jīng)常有香客問我,道長赌髓,這世上最難降的妖魔是什么从藤? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮锁蠕,結(jié)果婚禮上夷野,老公的妹妹穿的比我還像新娘。我一直安慰自己荣倾,他們只是感情好悯搔,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著舌仍,像睡著了一般妒貌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上铸豁,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天灌曙,我揣著相機(jī)與錄音,去河邊找鬼推姻。 笑死,一個(gè)胖子當(dāng)著我的面吹牛框沟,可吹牛的內(nèi)容都是我干的藏古。 我是一名探鬼主播,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼忍燥,長吁一口氣:“原來是場噩夢啊……” “哼拧晕!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起梅垄,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤厂捞,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體靡馁,經(jīng)...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡欲鹏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了臭墨。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赔嚎。...
    茶點(diǎn)故事閱讀 38,094評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖胧弛,靈堂內(nèi)的尸體忽然破棺而出尤误,到底是詐尸還是另有隱情,我是刑警寧澤结缚,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布损晤,位于F島的核電站,受9級(jí)特大地震影響红竭,放射性物質(zhì)發(fā)生泄漏尤勋。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一德崭、第九天 我趴在偏房一處隱蔽的房頂上張望斥黑。 院中可真熱鬧,春花似錦眉厨、人聲如沸锌奴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鹿蜀。三九已至,卻和暖如春服球,著一層夾襖步出監(jiān)牢的瞬間茴恰,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工斩熊, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留往枣,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓粉渠,卻偏偏與公主長得像分冈,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子霸株,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,828評論 2 345

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