vue3相關(guān)

vue3的生命周期

vue2 vue3 差異比較
beforeCreate setup setup() :開(kāi)始創(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è)來(lái)自子孫組件的異常時(shí)激活鉤子函數(shù)
onRenderTracked vue3新增的周期用于開(kāi)發(fā)調(diào)試使用的
onRenderTriggered vue3新增的周期用于開(kāi)發(fā)調(diào)試使用的
  • vue2的beforeCreatecreate變成了setup
  • 除了setup外大部分還是vue2的名字,只是在前面加了個(gè)on
  • vue2的destroyedbeforDestroy變成了onUnmounted(尤大的解釋是Unmounted更加語(yǔ)義化,卸載的意思比vue2的銷(xiāo)毀更加形象)
  • 關(guān)于調(diào)試函數(shù),目前官方文檔也沒(méi)有過(guò)多講解

vue3的watch的變化和watchEffect()

在vue2里面采用的是一個(gè)對(duì)象的形式,然后在里面去監(jiān)聽(tīng)不同的值,在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)在的語(yǔ)法類(lèi)似各類(lèi)ui框架一樣要按需引入</br>
這里的wacth函數(shù)接收兩個(gè)參數(shù),第一個(gè)參數(shù)是我們要檢測(cè)的值,第二個(gè)是回調(diào)函數(shù),和以前一樣擁有新舊兩個(gè)值</br>
同時(shí),vue3的watch支持同時(shí)監(jiān)聽(tīng)多個(gè)值,以數(shù)組的形式:

import {watch} from 'vue'

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

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

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

它是一個(gè)方法,接收一個(gè)回調(diào)函數(shù),他不需要去指定監(jiān)聽(tīng)誰(shuí),它會(huì)去自動(dòng)收集依賴(lài),只要在回調(diào)函數(shù)中使用了的屬性,在發(fā)生變化的時(shí)候,都會(huì)去觸發(fā)這個(gè)回調(diào)函數(shù),這樣就會(huì)變得非常簡(jiǎn)單,在業(yè)務(wù)中,我們不必去特意的監(jiān)聽(tīng)某某屬性,而是直接把他寫(xiě)在其回調(diào)函數(shù)中,就可以自動(dòng)幫我們收集依賴(lài)

其它

  • Composition API

    • Compositon API不是一個(gè)api,而是很多個(gè)API組合的一套API,我們統(tǒng)稱(chēng)為這名字,vue2中,我們會(huì)在methods,computed,watch,data中等等定義屬性和方法,共同處理頁(yè)面邏輯,我們稱(chēng)這種方式為Options API,這樣的方式在項(xiàng)目過(guò)大的時(shí)候我們發(fā)現(xiàn),一個(gè)methods定義數(shù)十個(gè)方法的時(shí)候,還得準(zhǔn)備知道每個(gè)方法的this,作用,干嘛的就會(huì)變得非常麻煩,而Composition API就是解決這個(gè)問(wèn)題的
    • vue3 Composition API中,我們的代碼是根據(jù)邏輯功能來(lái)組織的,一個(gè)功能所定義的所有api會(huì)放在一起(更加的高內(nèi)聚,低耦合),這樣做,即使項(xiàng)目很大,功能很多,我們都能快速的定位到這個(gè)功能所用到的所有API
  • createApp()
    vue2中是使用new Vue的方式,vue3使用createApp的方式,本質(zhì)是沒(méi)有太大的區(qū)別,但是呢,在之前我們每次注冊(cè)一些全局的組建,mixin,plugins,prototype等,都會(huì)是這樣的方式,Vue.mixin(...xxx)這樣的方式,會(huì)造成,全局只有一個(gè)app的實(shí)例,這樣就會(huì)造成實(shí)例污染,而在vue3中,createApp會(huì)返回一個(gè)全新的app,可以很好的避免這個(gè)問(wèn)題

  • Vue3如何注冊(cè)全局組件

    app.component('componentName', component)
  • Vue3如何注冊(cè)自定義指令
/** 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的寫(xiě)法

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 因?yàn)檫@個(gè)月的月初給自己定了個(gè)小目標(biāo),學(xué)完Vue3的基本使用,并使用Vue3親手做一個(gè)小項(xiàng)目(稍微透露一下,我制作的...
    1kesou閱讀 4,983評(píng)論 0 8
  • 本篇針對(duì)vue3的新增特性進(jìn)行學(xué)習(xí)主要來(lái)自http://www.liulongbin.top:8085/#/[ht...
    哎呀_js閱讀 14,351評(píng)論 1 6
  • 為什么要學(xué)習(xí)vue3呢? vue2.0也是現(xiàn)在比較穩(wěn)定的一個(gè)版本,社區(qū)還有周邊都比較完善,如果不是非必要其實(shí)我們不...
    嘎子同學(xué)閱讀 8,545評(píng)論 1 3
  • 01-Vue 3.0開(kāi)篇-理解 一、為什么現(xiàn)在才講Vue3.0? 因?yàn)樽蛱觳虐l(fā)布正式版本 正式版之前API不穩(wěn)定(...
    六寸光陰丶閱讀 4,499評(píng)論 0 15
  • vue3.0快發(fā)布了,也帶來(lái)了很多新的特性,如新的監(jiān)測(cè)設(shè)計(jì),PWA,TS支持等,本節(jié)一起了解下新的監(jiān)測(cè)原理。 舊的...
    老鼠AI大米_Java全棧閱讀 6,737評(píng)論 0 2

友情鏈接更多精彩內(nèi)容