Vue3是Vue.js的下一個主要版本,它主要引入了Composition API,這閱讀Vue3源碼和創(chuàng)建高效,更容易組合的代碼。其中重要的一個Hooks就是onCreated。
一、概述
onCreated與Vue2.x中的created類似,作為組件實例的一個生命周期鉤子函數(shù),當組件實例被創(chuàng)建時觸發(fā)。在組件初始化階段,我們可以在onCreated中進行一些基本的組件設計,比如初始化組件的數(shù)據(jù)、方法和組件的生命周期,等等。而在這個時候組件還沒有被掛載到DOM上。
import { onCreated } from 'vue'
export default {
onCreated() {
console.log('Component created');
}
}
二、數(shù)據(jù)初始化
Vue3中的數(shù)據(jù)驅(qū)動與Vue2.x相比有了很大的變化。在組件創(chuàng)建階段,我們通常需要進行一些組件數(shù)據(jù)的初始化。這時我們可以利用onCreated鉤子函數(shù),在組件創(chuàng)建時進行數(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中定義一些組件方法,通過組件實例從而調(diào)用這些方法。在組件這個生命周期中調(diào)用方法可能會在其它方法執(zhí)行期間觸發(fā),因此可以在onCreated中定義一個方法引用,在其它方法中可以隨時使用該引用。
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)建時自動調(diào)用。在Vue3中,onCreated代替了Vue2.x中的created生命周期鉤子函數(shù)。它是組件在Vue3中的第一個被調(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');
})
}
}
五、總結
onCreated作為Vue3的生命周期函數(shù)之一,具有以下優(yōu)點:
提供了組件實例中進行基本的組件設計和數(shù)據(jù)初始化的機會; 在組件創(chuàng)建階段調(diào)用,避免組件掛載時帶來的性能消耗,并且可以為其它生命周期函數(shù)提供數(shù)據(jù)基礎; 在組件創(chuàng)建階段提供了記錄日志或調(diào)試的機會,方便開發(fā)調(diào)試。在實際開發(fā)中,我們可以靈活地使用onCreated這個生命周期函數(shù),利用它來初始化數(shù)據(jù)、調(diào)用其他方法,以及檢查組件實例的狀態(tài)。