學習vue生命週期

小呆瓜coco發表於2018-03-27

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 取而代之。

相關文章