Vue3是Vue.js的下一個(gè)主要版本,它主要引入了Composition API,這閱讀Vue3源碼和創(chuàng)建高效,更容易組合的代碼。其中重要的一個(gè)Hooks就是onCreated。
一、概述
onCreated與Vue2.x中的created類似,作為組件實(shí)例的一個(gè)生命周期鉤子函數(shù),當(dāng)組件實(shí)例被創(chuàng)建時(shí)觸發(fā)。在組件初始化階段,我們可以在onCreated中進(jìn)行一些基本的組件設(shè)計(jì),比如初始化組件的數(shù)據(jù)、方法和組件的生命周期,等等。而在這個(gè)時(shí)候組件還沒有被掛載到DOM上。
import { onCreated } from 'vue'
export default {
onCreated() {
console.log('Component created');
}
}
二、數(shù)據(jù)初始化
Vue3中的數(shù)據(jù)驅(qū)動(dòng)與Vue2.x相比有了很大的變化。在組件創(chuàng)建階段,我們通常需要進(jìn)行一些組件數(shù)據(jù)的初始化。這時(shí)我們可以利用onCreated鉤子函數(shù),在組件創(chuàng)建時(shí)進(jìn)行數(shù)據(jù)的初始化賦值。
import { onCreated, reactive } from 'vue'
export default {
setup() {
const data = reactive({
name: 'Jack',
age: 18
})
onCreated(() => {
console.log(name: ${data.name}, age: ${data.age})
})
return {
data
}
}
}
三、調(diào)用方法
除了數(shù)據(jù)初始化,我們還可以在onCreated中定義一些組件方法,通過組件實(shí)例從而調(diào)用這些方法。在組件這個(gè)生命周期中調(diào)用方法可能會(huì)在其它方法執(zhí)行期間觸發(fā),因此可以在onCreated中定義一個(gè)方法引用,在其它方法中可以隨時(shí)使用該引用。
import { onCreated, ref } from 'vue'
export default {
setup() {
const title = ref("Vue3 onCreated")
function sayHello(name) {
console.log(${name} say: Hello World);
}
onCreated(() => {
sayHello('Jack')
})
return {
title
}
}
}
四、組件生命周期
onCreated是組件生命周期的一部分,在組件創(chuàng)建時(shí)自動(dòng)調(diào)用。在Vue3中,onCreated代替了Vue2.x中的created生命周期鉤子函數(shù)。它是組件在Vue3中的第一個(gè)被調(diào)用的鉤子函數(shù)。
Vue3組件的生命周期函數(shù)按照順序依次為:onCreated、onMounted、onUpdated、onBeforeUnmount、onUnmounted。
import { onCreated, onMounted } from 'vue'
export default {
setup() {
onCreated(() => {
console.log('Component created');
})
onMounted(() => {
console.log('Component mounted');
})
}
}
五、總結(jié)
onCreated作為Vue3的生命周期函數(shù)之一,具有以下優(yōu)點(diǎn):
提供了組件實(shí)例中進(jìn)行基本的組件設(shè)計(jì)和數(shù)據(jù)初始化的機(jī)會(huì); 在組件創(chuàng)建階段調(diào)用,避免組件掛載時(shí)帶來的性能消耗,并且可以為其它生命周期函數(shù)提供數(shù)據(jù)基礎(chǔ); 在組件創(chuàng)建階段提供了記錄日志或調(diào)試的機(jī)會(huì),方便開發(fā)調(diào)試。在實(shí)際開發(fā)中,我們可以靈活地使用onCreated這個(gè)生命周期函數(shù),利用它來初始化數(shù)據(jù)、調(diào)用其他方法,以及檢查組件實(shí)例的狀態(tài)。