Nic Lin's Blog

喜歡在地上滾的工程師

搞懂生命週期 (LifeCycle)

官方圖片解釋 1064935-20170103204551597-1413099760.png

Understanding Vue LifeCycle Hook

beforeCreate

在 Vue Instance、 Component(組件/元件) 初始化之後,數據觀測(data observer)和 event/watcher 事件配置之前被調用。

created

Vue Instance、 Component(組件/元件)創建完成,資料 $data 已經可以取得,屬性已經綁定,但 DOM 還未生成,並且 $el 屬性還不存在。

beforeMount

在掛載開始之前被調用,相關的 render 函數首次被調用。

mounted

el 被新創建的 vm.$el 替換,並掛載到 instance 上去之後調用該 hook。

beforeUpdate

數據更新之前被調用,發生在虛擬 DOM 重新渲染之前,可以在這個 hook 中進一步改變狀態,並不會觸發附加的重新渲染過程,這時還不會描繪 View。

updated

由於數據更改導致虛擬 DOM 重新渲染,這時 DOM 已經更新完成, View 被顯示在畫面上。

activated

有設定 keep-alive 時,這個 hook 會被呼叫。

deactivated

停用 keep-alive 時被呼叫。

beforeDestroy

Instance 被銷毀之前調用,在這一步中,該 instance 完全可以使用。

destroyed

Vue Instance 銷毀後調用,調用後該 instance 的所有東西會解除綁定,也會同時解掉所有 event listener, 所有 child instance 也會清除。

注意

  • 資料在 created 以後才存取的到(別把資料初始化跟 ajax 寫在 beforeCreate)

場景運用

  • beforeCreate: 加入 loading 事件
  • created: 在這結束 loading, 做 initialize 實現函數執行
  • mounted: 在這對 backend 發起請求, get some data 後搭配 hook do something
  • beforeDestroy: 你確認刪除__嗎?
  • destroyed: 當該 component 刪除後清空相關內容

reference

comments powered by Disqus