Vue生命周期實(shí)例分析總結(jié)
1. 概述
每個(gè) Vue 實(shí)例在被創(chuàng)建之前都要經(jīng)過一系列的初始化過程。例如需要設(shè)置數(shù)據(jù)監(jiān)聽、編譯模板、掛載實(shí)例到 DOM、在數(shù)據(jù)變化時(shí)更新 DOM 等。同時(shí)在這個(gè)過程中也會(huì)運(yùn)行一些叫做生命周期鉤子的函數(shù),給予用戶機(jī)會(huì)在一些特定的場(chǎng)景下添加他們自己的代碼。
簡(jiǎn)單來說,生命周期鉤子函數(shù)就是一堆回調(diào)函數(shù),在我們創(chuàng)建實(shí)例時(shí),這些回調(diào)函數(shù)按順序執(zhí)行。
2. 頁(yè)面鉤子函數(shù)
| 名稱 | 作用 |
|---|---|
| beforeCreate | 在實(shí)例初始化之后,數(shù)據(jù)觀測(cè)和事件配置之前被調(diào)用。此時(shí) data 和 methods 以及頁(yè)面的DOM結(jié)構(gòu)都沒有初始化,什么都做不了,執(zhí)行1次 |
| created | 在實(shí)例創(chuàng)建完成后被立即調(diào)用,此時(shí)data 和 methods 已經(jīng)可以使用,但是頁(yè)面還沒有渲染出來,執(zhí)行1次,用this對(duì)象 |
| beforeMount | 在掛載開始之前被調(diào)用,此時(shí)頁(yè)面上還看不到真實(shí)數(shù)據(jù),只是一個(gè)模板頁(yè)面而已,執(zhí)行1次 |
| mounted | el被新創(chuàng)建的vm.$el替換,并掛載到實(shí)例上去之后調(diào)用該鉤子。 數(shù)據(jù)已經(jīng)真實(shí)渲染到頁(yè)面上 在這個(gè)鉤子函數(shù)里面,可以進(jìn)行數(shù)據(jù)請(qǐng)求等,執(zhí)行1次 |
| beforeUpdate | 數(shù)據(jù)更新時(shí)調(diào)用,頁(yè)面上數(shù)據(jù)還是舊的 n次 |
| updated | 由于數(shù)據(jù)更新完畢,頁(yè)面上數(shù)據(jù)已經(jīng)替換成最新的 n次 |
| beforeDestroy | 實(shí)例銷毀之前調(diào)用,執(zhí)行1次 |
| destroyed | 實(shí)例銷毀后調(diào)用,執(zhí)行1次 |
| activated | keep-alive 組件激活時(shí)調(diào)用 |
| deactivated | keep-alive 組件停用時(shí)調(diào)用 |
| errorCaptured | 當(dāng)捕獲一個(gè)來自子孫組件的錯(cuò)誤時(shí)被調(diào)用 |
3. 生命周期函數(shù)

下面我們用代碼實(shí)現(xiàn)以下生命周期函數(shù)的執(zhí)行順序:
<div id="app">
<input type="text" v-model="username">
</div>
<script>
const vm = new Vue({
el: '#app',
data: {
username: ''
},
// 初始化階段生命周期 -- 它只都只執(zhí)行1次
beforeCreate() {
console.log('beforeCreate');
},
created() {
console.log('created');
},
beforeMount() {
console.log('beforeMount');
},
mounted() {
console.log('mounted');
setTimeout(() => {
// 銷毀
this.$destroy()
}, 2000);
this.timer = setInterval(() => {
console.log(111);
}, 1000);
},
// 更新階段生命周期,它們會(huì)執(zhí)行N次
beforeUpdate() {
console.log('beforeUpdate');
},
updated() {
console.log('updated');
},
// 銷毀階段 只執(zhí)行1次
beforeDestroy() {
clearInterval(this.timer)
console.log('beforeDestroy');
},
destroyed() {
console.log('destroyed');
}
})
</script>
到此這篇關(guān)于Vue生命周期實(shí)例分析總結(jié)的文章就介紹到這了,更多相關(guān)Vue生命周期內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue3中實(shí)現(xiàn)使用element-plus調(diào)用message
這篇文章主要介紹了vue3中實(shí)現(xiàn)使用element-plus調(diào)用message,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09
vue axios 封裝請(qǐng)求攔截多次彈窗的問題及解決
這篇文章主要介紹了vue axios 封裝請(qǐng)求攔截多次彈窗的問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08
原生JS實(shí)現(xiàn)Vue transition fade過渡動(dòng)畫效果示例
這篇文章主要為大家介紹了原生JS實(shí)現(xiàn)Vue transition fade過渡動(dòng)畫效果示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06
VUE動(dòng)態(tài)綁定class類的三種常用方式及適用場(chǎng)景詳解
文章介紹了在實(shí)際開發(fā)中動(dòng)態(tài)綁定class的三種常見情況及其解決方案,包括根據(jù)不同的返回值渲染不同的class樣式、給模塊添加基礎(chǔ)樣式以及根據(jù)設(shè)計(jì)確定是否使用多個(gè)樣式2025-01-01
基于Vue3實(shí)現(xiàn)百度地圖位置選擇器組件
在開發(fā)前端應(yīng)用時(shí),地圖選擇器是一個(gè)非常常見的需求,本文將一步步展示如何使用?Vue?3?和?Element?Plus?來實(shí)現(xiàn)一個(gè)百度地圖位置選擇器組件,有需要的可以參考一下2025-04-04
vue判斷內(nèi)容是否滑動(dòng)到底部的三種方式
這篇文章主要介紹了vue判斷內(nèi)容是否滑動(dòng)到底部的三種方式,文中通過代碼示例給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-04-04
vue實(shí)現(xiàn)列表無縫滾動(dòng)效果
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)列表無縫滾動(dòng)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04

