Vue學習筆記(2)—— Vue的生命週期

榕樹島發表於2018-10-16

(轉自CSDN)面試碰到這個問題了,回想一下,很多問題都是寫程式碼的時候碰到了隨查隨寫缺少總結,真到了要說點什麼的時候就說的亂七八糟,那麼這次就來捋一捋Vue的生命週期

生命週期,就是Vue例項在被建立之前要經過一系列的初始化過程。首先,放一張Vue官網的生命週期圖示。
圖示中可以看到,Vue的生命週期中順序的包含了以下幾個生命週期鉤子,然後結合生命週期我們逐一討論:

  • beforeCreate
  • created
  • beforeMount
  • mounted
  • beforeUpdate
  • updated
  • beforeDestroy
  • destroyed
    在這裡插入圖片描述

1. beforeCreate

在這個生命週期,元件例項剛剛被建立但尚未建立完成,而元件屬性如$eldata等都還沒有計算。

2. created

元件例項已建立完成,data等屬性已繫結完成,但DOM尚未生成,$el 屬性還不存在

3. beforeMount

即模板編譯、掛載之前,這個生命週期,首先會判斷是否存在el選項,存在則繼續編譯,否則停止編譯、生命週期暫停直到呼叫vm.$mount(el)方法才會繼續向下編譯,這個el引數就是掛載的DOM節點。 接下來會判斷是否存在template選項,存在則將其作為模板編譯成render函式,否則將el的外部HTML作為模板編譯。
另外vue物件中存在一個render函式,它的優先順序大於template。

4. mounted

即模板編譯、掛載之後,這裡會給vue例項物件新增$el成員,並且替換掉掛載的DOM元素。舉例而言,我們寫在頁面的<div>{{msg}}</div>是在這裡把例項裡的msg值渲染上去的。

5. beforeUpdate

data的資料發生改變時,會觸發對應元件的重新渲染,這時可以檢測到data變化但是view還沒有重新渲染。

6. updated

view層被重新渲染,資料更新。

6. beforeDestroy

beforeDestroy在例項被銷燬之前,這時例項仍然完全可用。

7. destroyed

destroyed 在例項被銷燬之後,Vue 例項指示的所有東西都會解繫結,所有的事件監聽器會被移除,所有的子例項也會被銷燬。


生命週期就討論到這裡了,覺得比較抽象的盆友可以自己寫demo測試一下,會更直觀一些,或者參考一下更詳細的文章把。

參考文章:

Vue2.0 探索之路——生命週期和鉤子函式的一些理解
Vue官網文件
詳解vue生命週期

相關文章