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的環節,否則結束生命...