Vue實例中生命週期created和mounted的區別

原文鏈接:https://blog.csdn.net/m0_37852904/article/details/78716409

最近剛好在學習Vue.js,在實敲輪播demo時發現了一個當時感覺很奇怪的問題:初始化使用mounted鉤子時,只調用了一次,之後就沒有調用過了。害我一直以爲是自己之後的代碼書寫有問題,結果自己再敲一遍還是隻能初始化調用一次。。。發現這個問題後找找大神們的博客看了看,發現了created鉤子的使用。下面就將這次的經歷給記錄下來。。。

生命週期先上圖

這裏寫圖片描述

什麼是生命週期

Vue實例有一個完整的生命週期,也就是從開始創建、初始化數據、編譯模板、掛載Dom、渲染→更新→渲染、卸載等一系列過程,我們稱這是Vue的生命週期。通俗說就是Vue實例從創建到銷燬的過程,就是生命週期。
在Vue的整個生命週期中,它提供了一系列的事件,可以讓我們在事件觸發時註冊js方法,可以讓我們用自己註冊的js方法控制整個大局,在這些事件響應方法中的this直接指向的是vue的實例。

再上圖,對生命週期圖的標註

這裏寫圖片描述

特別值得注意的是created鉤子函數和mounted鉤子函數的區別

1.每個鉤子函數都在啥時間觸發
beforeCreate

2.在實例初始化之後,數據觀測(data observer) 和 event/watcher 事件配置之前被調用。
created

3.實例已經創建完成之後被調用。在這一步,實例已完成以下的配置:數據觀測(data observer),屬性和方法的運算, watch/event 事件回調。然而,掛載階段還沒開始,$el 屬性目前不可見。
beforeMount

4.在掛載開始之前被調用:相關的 render 函數首次被調用。
mounted

5.el 被新創建的 vm.$el 替換,並掛載到實例上去之後調用該鉤子。
beforeUpdate

6.數據更新時調用,發生在虛擬 DOM 重新渲染和打補丁之前。 你可以在這個鉤子中進一步地更改狀態,這不會觸發附加的重渲染過程。
updated

7.由於數據更改導致的虛擬 DOM 重新渲染和打補丁,在這之後會調用該鉤子。
當這個鉤子被調用時,組件 DOM 已經更新,所以你現在可以執行依賴於 DOM 的操作。然而在大多數情況下,你應該避免在此期間更改狀態,因爲這可能會導致更新無限循環。

8.該鉤子在服務器端渲染期間不被調用。

beforeDestroy

9.實例銷燬之前調用。在這一步,實例仍然完全可用。
destroyed

10.Vue 實例銷燬後調用。調用後,Vue 實例指示的所有東西都會解綁定,所有的事件監聽器會被移除,所有的子實例也會被銷燬。 該鉤子在服務器端渲染期間不被調用。

 

總之呢,個人感覺初步感覺就是:created鉤子每次加載完成後都可以重複執行;而mounted鉤子只在頁面第一次加載後才調用出來,只要el被加載過,之後的重複加載該頁面就不會調用該鉤子了

原文鏈接:https://segmentfault.com/a/1190000008570622

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章