vue官方文件---生命週期
vue-router--路由鉤子
元件生命週期:
beforeCreate
created
beforeMount
mounted
beforeUpdate
updated
beforeDestroy
destroyed
beforeCreate
在例項初始化之後,資料觀測 (data observer) 和 event/watcher 事件配置之前被呼叫
此時元件的選項還未掛載,因此無法訪問methods
,data
,computed
上的方法或資料
created
在例項建立完成後被立即呼叫。在這一步,例項已完成以下的配置:資料觀測 (data observer),屬性和方法的運算,watch/event事件回撥。然而,掛載階段還沒開始,$el 屬性目前不可見。
這是一個常用的生命週期,因為你可以呼叫methods
中的方法、改變data
中的資料,並且修改可以通過vue的響應式繫結體現在頁面上、獲取computed
中的計算屬性等等。
tip:
通常我們可以在這裡對例項進行預處理。
也有一些童鞋喜歡在這裡發ajax請求,值得注意的是,這個週期中是沒有什麼方法來對例項化過程進行攔截的。
因此假如有某些資料必須獲取才允許進入頁面的話,並不適合在這個頁面發請求。
建議在元件路由勾子beforeRouteEnter中來完成。
複製程式碼
beforeMount
在掛載開始之前被呼叫:相關的 render
函式首次被呼叫。
該鉤子在伺服器端渲染期間不被呼叫。
mounted ?
el
被新建立的vm.$el
替換,並掛載到例項上去之後呼叫該鉤子。如果 root 例項掛載了一個文件內元素,當 mounted 被呼叫時 vm.$el 也在文件內。
注意mounted
不會承諾所有的子元件也都一起被掛載。如果你希望等到整個檢視都渲染完畢,可以用 vm.$nextTick
替換掉 mounted
:
mounted() {
this.$nextTick(() => {
// 回撥裡的函式一直到真實的dom渲染結束後,才執行
})
}
複製程式碼
beforeUpdate
資料更新時呼叫,發生在虛擬 DOM 打補丁之前。這裡適合在更新之前訪問現有的 DOM,比如手動移除已新增的事件監聽器。
updated
由於資料更改導致的虛擬 DOM 重新渲染和打補丁,在這之後會呼叫該鉤子。
當這個鉤子被呼叫時,元件 DOM 已經更新,所以你現在可以執行依賴於 DOM 的操作。然而在大多數情況下,你應該避免在此期間更改狀態。如果要相應狀態改變,通常最好使用計算屬性
或 watcher
取而代之。