vue組件的生命周期


先來張組件生命周期的示意圖:

 

 文檔里是這樣描述的:你不需要立馬弄明白所有的東西,不過以后它會有幫助。傳送門.

Vue2.0的生命周期鈎子一共有10個,同樣結合官方文檔作出了下表

生命周期鈎子
詳細
beforeCreate 在實例初始化之后,數據觀測(data observer) 和 event/watcher 事件配置之前被調用。
created 實例已經創建完成之后被調用。在這一步,實例已完成以下的配置:數據觀測(data observer),屬性和方法的運算, watch/event 事件回調。然而,掛載階段還沒開始,$el 屬性目前不可見。
beforeMount 在掛載開始之前被調用:相關的 render 函數首次被調用。
mounted el 被新創建的 vm.$el 替換,並掛載到實例上去之后調用該鈎子。如果 root 實例掛載了一個文檔內元素,當 mounted 被調用時 vm.$el 也在文檔內。
beforeUpdate 數據更新時調用,發生在虛擬 DOM 重新渲染和打補丁之前。你可以在這個鈎子中進一步地更改狀態,這不會觸發附加的重渲染過程。
updated 由於數據更改導致的虛擬 DOM 重新渲染和打補丁,在這之后會調用該鈎子。當這個鈎子被調用時,組件 DOM 已經更新,所以你現在可以執行依賴於 DOM 的操作。
activated keep-alive 組件激活時調用。
deactivated keep-alive 組件停用時調用。
beforeDestroy 實例銷毀之前調用。在這一步,實例仍然完全可用。
destroyed Vue 實例銷毀后調用。調用后,Vue 實例指示的所有東西都會解綁定,所有的事件監聽器會被移除,所有的子實例也會被銷毀。

 

Vue所有的生命周期鈎子自動綁定在this上下文到實例中,因此你可以訪問數據,對屬性和方法進行運算。這意味着你不能使用箭頭函數來定義一個生命周期方法。這是因為箭頭函數綁定了父上下文,因此this與你期待的Vue實例不同。
1、beforeCreate
  在實例初始化之后,數據觀測和event/watcher時間配置之前被調用。
2、created
  實例已經創建完成之后被調用。在這一步,實例已經完成以下的配置:數據觀測,屬性和方法的運算,watch/event事件回調。然而,掛載階段還沒開始,$el屬性目前不可見。
3、beforeMount
  在掛載開始之前被調用:相關的render函數首次被調用。
  該鈎子在服務器端渲染期間不被調用。
4、mounted
  el被新創建的vm.$el替換,並掛在到實例上去之后調用該鈎子函數。如果root實例掛載了一個文檔內元素,當mounted被調用時vm.$el也在文檔內。
  該鈎子在服務端渲染期間不被調用。
5、beforeUpdate
  數據更新時調用,發生在虛擬DOM重新渲染和打補丁之前。
  你可以在這個鈎子中進一步第更改狀態,這不會觸發附加的重渲染過程。
  該鈎子在服務端渲染期間不被調用。
6、updated
  由於數據更改導致的虛擬DOM重新渲染和打補丁,在這之后會調用該鈎子。
  當這個鈎子被調用時,組件DOM已經更新,所以你現在可以執行依賴於DOM的操作。然而在大多數情況下,你應該避免在此期間更改狀態,因為這可能會導致更新無限循環。
  該鈎子在服務端渲染期間不被調用。
7、activated
  keep-alive組件激活時調用。
  該鈎子在服務器端渲染期間不被調用。
(如果你使用keep-alive進行緩存, 又希望每次切換組件的時候更新數據,那么更新數據的請求方式必須寫在該鈎子函數里)
8、deactivated
  keep-alive組件停用時調用。
  該鈎子在服務端渲染期間不被調用。
9、beforeDestroy 【類似於React生命周期的componentWillUnmount】
  實例銷毀之前調用。在這一步,實例仍然完全可用。
  該鈎子在服務端渲染期間不被調用。
10、destroyed
  Vue實例銷毀后調用。調用后,Vue實例指示的所有東西都會解綁定,所有的事件監聽器會被移除,所有的子實例也會被銷毀。
  該鈎子在服務端渲染不會被調用。

 很好的一篇博文:

        博文        


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM