Vue 生命周期詳解


一 、簡介

Vue每個組件都是獨立的,每個組件都有一個屬於它的生命周期,從一個組件創建、數據初始化、掛載、更新、銷毀,這就是一個組件所謂的生命周期


二、分析

image

初始化事件 & 生命周期

初始化組件的事件和生命周期函數,當執行完成這一步之后,組件的生命周期函數,就已經初始化好了,等待依次去調用

beforeCreate

這是第一個生命周期函數;此時,組件的data和methods以及頁面DOM結構,都還沒有初始化,所以此階段,什么都做不了

初始化注入 & 校驗

這個階段,正在初始化data和methods中的數據以及方法

created

這是組件第二個生命周期函數,此時的data和methods已經可用,但頁面還沒有渲染出來,通常操作axios請求

是否指定 el 選項

如果是,是否指定template模板。如果有模板,先渲染模板,否則就編寫#app下的Html模板

// 如果不是,最后手動指定#app,然后再操作是否有template模板
vue.$mount('#app')

image

這一部分執行完成后,把data數據拿到后,並且解析執行模板結構中的指令;當所有指令被解析完畢后,那么頁碼就會渲染到內存中了;當模板編譯完成后,我們的模板頁面,還沒有掛載到頁面上,只是在內存中,用戶看不到

beforeMount

這是第三個生命周期函數,當模板在內存中執行完成后,會立即執行;此時內存中的模板結構,還沒有真正渲染到頁面上,此時頁面看不到真實的數據

創建vm.$el 並替換 el

這一步,正在把內存中渲染好的模板結構,替換到頁面上,屬於正在掛載階段

mounted

  1. 此時掛載完成,這個mounted是組件創建階段最后一個生命周期函數;此時頁面真正的渲染完了,用戶可以看到真實的數據;
  2. 當這個生命周期函數執行完后,組件就離開創建組件階段,進入到運行中的階段
  3. 用於初始化第三方UI插件

image

組件運行中的生命周期函數,會根據Data數據的變化,有選擇性的觸發 0 次 或 N 次

beforeUpdate

當執行beforeUpdate運行中生命周期函數的時候,數據肯定是最新的;但是,頁面呈現出的數據還是舊的

虛擬DOM 重新渲染,並應用更新

這是渲染好的階段

updated

頁面更新完后,此時data數據是最新的,同時頁面上呈現出的數據也是最新的

beforeDestory

當執行beforeDestory的時候,組件即將被銷毀,但是還沒有真正開始銷毀,只是銷毀前的操作;組件還可以正常可用

解除綁定,銷毀子組件以及事件監控

此時是銷毀過程,正在銷毀中

destroyed

組件銷毀完畢,data和methods都不可用


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM