vue生命週期詳解

2021-08-24 17:25:42 字數 1322 閱讀 2278

vue生命週期分為八個階段:建立前後/掛載前後/更新前後/銷毀前後

beforecreate和create鉤子函式間的生命週期:檢測資料,來檢測資料是否變化了,然後初始化事件;

create和beforemount鉤子函式間的生命週期

首先判斷有沒有el選項:

1.如果沒有的話就暫時停止了生命週期,等待vm.$mount(el)(或手動新增);

2.如果有的話,繼續往下編譯,然後判斷有沒有template引數選項:

2.1如果vue例項物件中有template引數選項,則將其作為模板編譯成render函式

2.2如果沒有的話,那麼外部的html作為編譯模板(template)。(由此可見,例項內部的template模板要比外部的html模板的優先順序要高)

2.3如果上面兩個條件都不滿足,則報錯

注意:為什麼判斷el要在判斷template之前呢?(因為vue例項先通過給定el的引數才能找到對應的template引數。vue通過el引數去找到對應的template。然後,根據el引數給出的「選擇器」,首先去vue例項物件本身的template選項引數中找,如果沒有template引數,則到外部html中尋找,找到後將模板編譯成render函式)

beforemount和mount鉤子函式間的生命週期

正因為render函式和template選項的「優先順序」比外部html要高,所以,最後一般會存在乙個外部html模板被vue例項本身配置的模板所「替代」的過程也就是上圖所說的 「replace。

beforeupdate和update鉤子函式間的生命週期:

vue中,資料的更改會導致虛擬dom重新渲染,並呼叫這兩個鉤子函式;(但要注意一點:重渲染(呼叫這兩個鉤子函式)的前提是被更改的資料已經被寫入模板中!!(這點很重要))。只有vue資料被寫入模板中,它的改變才能被追蹤的到,進而呼叫這兩個鉤子。

beforedestroy和destroy鉤子函式間的生命週期:

destroyed鉤子函式在vue 例項銷毀後呼叫。呼叫後,vue 例項指示的所有東西都會解繫結,所有的事件***會被移除,所有的子例項也會被銷毀。

借鑑博主外婆的彭湖灣(

自己用到的生命週期鉤子:

mounted:利用這個生命週期鉤子,去監聽乙個bus的改變。

例子

vue.component('child',}});

var vm=new vue()}

})

vue生命週期詳解

最近在寫業務的時候,總是會遇到一些和vue的生命週期相關的問題,比如 你用ajax請求資料,然後將資料props到子元件的時候,因為ajax是非同步的,然後會發生沒有資料。然後查詢原因還是自己對這個東西理解不夠深入。什麼是生命週期函式?比如 mounted function 或者 mounted 複...

vue生命週期詳解

beforecreate 第乙個生命週期函式,表示例項完全被建立出來之前,會執行它 注意 在 beforecreate 生命週期函式執行的時候,data 和 methods 中的 屬性與方法定義都還沒有沒初始化 created 第二個生命週期函式,在 created 中,data 和 methods...

詳解vue生命週期

vue的宣告週期 鉤子函式 共有8個,分別是 此時還會檢查是否有繫結el 例項的容器 如果有,就會接著檢查是否有template模板 如果沒有,還會檢查例項上有沒有.mount屬性 在main.js的例項,如圖1 假設el或者 mount有其中乙個,那麼就會入檢查template的環節,否則結束生命...