【Vue.js】生命週期created和mounted的區別

什麼是生命週期

Vue實例有一個完整的生命週期,也就是從開始創建、初始化數據、編譯模板、掛載Dom、渲染→更新→渲染、卸載等一系列過程,我們稱這是Vue的生命週期。通俗說就是Vue實例從創建到銷燬的過程,就是生命週期。 

生命週期 是否獲取dom節點 是否可以獲取data 是否獲取methods
beforeCreate
created
beforeMount
mounted

在beforecreate階段,對瀏覽器來說,整個渲染流程尚未開始或者說準備開始,對vue來說,實例尚未被初始化,data observer和 event/watcher也還未被調用,在此階段,對data、methods或文檔節點的調用現在無法得到正確的數據。

在created階段,對瀏覽器來說,渲染整個HTML文檔時,dom節點、css規則樹與js文件被解析後,但是沒有進入被瀏覽器render過程,上述資源是尚未掛載在頁面上,也就是在vue生命週期中對應的created階段,實例已經被初始化,但是還沒有掛載至$el上,所以我們無法獲取到對應的節點,但是此時我們是可以獲取到vue中data與methods中的數據的

在beforecreate階段,實際上與created階段類似,節點尚未掛載,但是依舊可以獲取到data與methods中的數據。

在mounted階段,對瀏覽器來說,已經完成了dom與css規則樹的render,並完成對render tree進行了佈局,而瀏覽器收到這一指令,調用渲染器的paint()在屏幕上顯示,而對於vue來說,在mounted階段,vue的template成功掛載在$el中,此時一個完整的頁面已經能夠顯示在瀏覽器中,所以在這個階段,即可以調用節點了(關於這一點,在筆者測試中,在mounted方法中打斷點然後run,依舊能夠在瀏覽器中看到整體的頁面)。 

通常我們用的最多的就是created和mounted,通俗的說,就是實例被創建後(頁面打開)不需要主動操作就會自動觸發的事件,

created和mounted的區別

我感覺沒啥區別,都可以發起調用數據的api請求,都可以操作數據,只不過created不能操作dom,簡單來說就是無法根據id、class之類的找到對應的元素

 

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