vue3生命周期原理與生命周期函數(shù)簡(jiǎn)單應(yīng)用實(shí)例分析 原創(chuàng)
原理概述
Vue 3的生命周期(Lifecycle)指的是組件從創(chuàng)建到銷(xiāo)毀經(jīng)歷的一系列事件,在這些事件中可以執(zhí)行一些操作,例如初始化數(shù)據(jù)、渲染視圖、加載異步數(shù)據(jù)等。在Vue 3中,通過(guò)setup()函數(shù)來(lái)定義組件的生命周期。
實(shí)例分析
Vue 3的生命周期包含了以下幾個(gè)階段:
1. beforeCreate
在實(shí)例創(chuàng)建之前,即在初始化之前被調(diào)用。此時(shí),尚未初始化組件實(shí)例,無(wú)法訪問(wèn)data、methods和computed等屬性,在組件狀態(tài)初始化之前執(zhí)行一些操作。
export default {
beforeCreate() {
console.log('beforeCreate');
}
}2. created
在實(shí)例創(chuàng)建之后,即在初始化之后被調(diào)用。此時(shí),已經(jīng)完成了數(shù)據(jù)觀測(cè)等配置,但尚未掛載DOM,并且可以訪問(wèn)data、methods和computed等屬性??梢允褂胏reated鉤子函數(shù)進(jìn)行數(shù)據(jù)初始化和事件的監(jiān)聽(tīng)等操作。
import { onMounted, onUnmounted } from 'vue';
export default {
data() {
return {
count: 0
};
},
created() {
console.log('created');
},
mounted() {
onMounted(() => {
console.log('component mounted');
});
},
unmounted() {
onUnmounted(() => {
console.log('component unmounted');
});
}
}3. beforeMount
在掛載開(kāi)始之前被調(diào)用。在此階段中,尚未渲染真實(shí)的DOM節(jié)點(diǎn)??梢允褂胋eforeMount鉤子函數(shù),在組件掛載之前進(jìn)行一些異步操作,例如加載動(dòng)畫(huà)等。
export default {
beforeMount() {
console.log('beforeMount');
}
}4. mounted
在掛載結(jié)束后被調(diào)用。此時(shí),組件已經(jīng)渲染出真實(shí)的DOM。mounted鉤子函數(shù)往往用于初始化DOM操作以及與服務(wù)器交互后填充組件的數(shù)據(jù),例如通過(guò)ref獲取DOM節(jié)點(diǎn)和注冊(cè)事件監(jiān)聽(tīng)器等。
export default {
mounted() {
console.log('mounted');
const button = this.$refs.myButton;
button.addEventListener('click', () => {
this.count++;
});
}
}5. beforeUpdate
在數(shù)據(jù)更新之前被調(diào)用。此時(shí),可以在更新之前訪問(wèn)舊的數(shù)據(jù)狀態(tài)??梢允褂胋eforeUpdate鉤子函數(shù),在組件數(shù)據(jù)更新之前執(zhí)行一些操作,例如動(dòng)態(tài)綁定class和style等。
export default {
beforeUpdate() {
console.log('beforeUpdate');
}
}
6. updated
在數(shù)據(jù)更新之后被調(diào)用。此時(shí),組件已經(jīng)更新DOM,可以通過(guò)訪問(wèn)最新的數(shù)據(jù)狀態(tài)來(lái)完成DOM的操作??梢允褂胾pdated鉤子函數(shù),在組件數(shù)據(jù)更新之后執(zhí)行一些操作,例如觸發(fā)動(dòng)畫(huà)效果等。
export default {
updated() {
console.log('updated');
}
}7. beforeUnmount
在組件卸載之前被調(diào)用。此時(shí),組件實(shí)例仍然完全可用,但是它的視圖已經(jīng)被銷(xiāo)毀并且不再更新??梢允褂胋eforeUnmount鉤子函數(shù),在組件卸載之前執(zhí)行一些清理操作,例如取消事件監(jiān)聽(tīng)器、定時(shí)器和異步請(qǐng)求等。
export default {
beforeUnmount() {
console.log('beforeUnmount');
}
}8. unmounted
在組件卸載之后被調(diào)用。此時(shí),組件實(shí)例以及其所有相關(guān)聯(lián)的DOM元素均已銷(xiāo)毀,無(wú)法再訪問(wèn)組件內(nèi)部數(shù)據(jù)和方法??梢允褂胾nmounted鉤子函數(shù),在組件卸載之后執(zhí)行一些最終清理操作。
export default {
unmounted() {
console.log('unmounted');
}
}需要注意的是,Vue 3中去掉了一些生命周期函數(shù),例如activated、deactivated和errorCaptured等,這些可以通過(guò)新的Composition API來(lái)實(shí)現(xiàn)。
總之,在Vue 3的開(kāi)發(fā)中,生命周期一直是非常重要的概念之一,需要將鉤子函數(shù)應(yīng)用到合適的場(chǎng)景中,以充分利用Vue 3提供的生命周期機(jī)制來(lái)優(yōu)化組件的性能和行為。合理地利用生命周期可以提高組件的代碼質(zhì)量和運(yùn)行效率。
相關(guān)文章
Vue中watch監(jiān)聽(tīng)首次不生效的解決辦法
在 Vue 中,watch 屬性用于觀察和響應(yīng) Vue 實(shí)例上數(shù)據(jù)的變動(dòng),然而,默認(rèn)情況下,watch 確實(shí)不會(huì)觸發(fā)組件創(chuàng)建時(shí)的變動(dòng),這里有幾種方式可以處理或繞過(guò)這個(gè)問(wèn)題,需要的朋友可以參考下2024-09-09
Vue中router-link如何添加mouseover提示
這篇文章主要介紹了Vue中router-link如何添加mouseover提示,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11
VUE?Element修改el-input和el-select長(zhǎng)度的具體步驟
這篇文章主要給大家介紹了關(guān)于VUE?Element修改el-input和el-select長(zhǎng)度的具體步驟,文中通過(guò)代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-12-12
vue中defineProperty和Proxy的區(qū)別詳解
這篇文章主要介紹了vue中defineProperty和Proxy的區(qū)別詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
vue中beforeRouteLeave實(shí)現(xiàn)頁(yè)面回退不刷新的示例代碼
這篇文章主要介紹了vue中beforeRouteLeave實(shí)現(xiàn)頁(yè)面回退不刷新的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
vue+swiper實(shí)現(xiàn)時(shí)間軸效果
這篇文章主要為大家詳細(xì)介紹了vue+swiper實(shí)現(xiàn)時(shí)間軸效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08
用v-html解決Vue.js渲染中html標(biāo)簽不被解析的問(wèn)題
這篇文章主要給大家介紹了如何利用v-html解決Vue.js渲染過(guò)程中html標(biāo)簽不能被解析,html標(biāo)簽顯示為字符串的問(wèn)題,文中通過(guò)圖文介紹的很詳細(xì),有需要的朋友們可以參考借鑒,下面來(lái)一起看看吧。2016-12-12
Vue + better-scroll 實(shí)現(xiàn)移動(dòng)端字母索引導(dǎo)航功能
better-scroll 是一款重點(diǎn)解決移動(dòng)端(已支持 PC)各種滾動(dòng)場(chǎng)景需求的插件。這篇文章主要介紹了Vue + better-scroll 實(shí)現(xiàn)移動(dòng)端字母索引導(dǎo)航功能,需要的朋友可以參考下2018-05-05
關(guān)于vue?src路徑動(dòng)態(tài)拼接的小知識(shí)
這篇文章主要介紹了vue?src路徑動(dòng)態(tài)拼接的小知識(shí),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。2022-04-04

