Vue 生命週期

2021-09-27 03:49:09 字數 1485 閱讀 4595

vue例項有乙個完整的生命週期,也就是從開始建立、初始化資料、編譯模板、掛載dom、渲染→更新→渲染、銷毀等一系列過程,我們稱這是vue的生命週期。通俗說就是vue例項從建立到銷毀的過程,就是生命週期。

每乙個元件或者例項都會經歷乙個完整的生命週期,總共分為三個階段:初始化、執行中、銷毀。

總共分為8個階段建立前/後,載入前/後,更新前/後,銷毀前/後

主要用到的是created函式(運算元據)和mounted函式(操作dom)

在beforecreate階段,vue例項的掛載元素el和資料物件data都為undefined,還未初始化。無法訪問到資料和真實的dom

在created階段,vue例項的資料物件data有了,掛載元素el還沒有。還沒有真實的dom

如果:資料的初始值就來自於後端,可以傳送ajax,或者fetch請求獲取資料,但是,此時不會觸發updated函式

在beforemount階段,vue例項的$el和data都初始化了,但還是掛載為虛擬的dom節點

此時 this.$el有值,但是資料還沒有掛載到頁面上。即此時頁面中的}還沒有被替換

當渲染好的頁面元素被掛載到頁面之前呼叫(拿不到有資料的dom,指令什麼樣,拿到的還是原樣的,並未解析),直白話:在這個階段已經建立出html,可以拿到頁面的dom,但是vm指令還未被解析,插值表示式並不會被解析}

,這個時候資料和指令還未結合

dom 渲染完成(模板編譯完成),資料掛載完畢

即:此時已經把資料依據掛載到了頁面上,所以,頁面上能夠看到正確的資料了。

元件更新之前執行的函式

資料更新了,但是,vue(元件)物件對應的dom中的內部(innerhtml)沒有變,所以叫作元件更新前

當有資料發生變化,但dom還未更新之前呼叫,此時如果訪問dom,拿到的內容還是舊內容(頁面上dom中的內容發生了改變,beforeupdate並不會立即更新)

當有資料發生變化,dom也更新完成之後呼叫,此時如果訪問dom,拿到的就是新內容了(頁面上dom中的內容發生了變化,updated拿到的更新後的內容)

立即執行beforedestroy,一般在這裡做一些善後工作,例如清除計時器、清除非指令繫結的事件等等

vue 例項銷毀後呼叫。呼叫後,vue 例項指示的所有東西都會解繫結,所有的事件***會被移除,所有的子例項也會被銷毀。 

3)、第一次頁面載入會觸發哪幾個鉤子

答:第一次頁面載入時會觸發 beforecreate, created, beforemount, mounted 這幾個鉤子

4)、dom渲染在哪個週期中就已經完成

答:dom 渲染在 mounted 中就已經完成了。

vue生命週期

beforecreate 元件例項剛剛被建立,屬性都沒有 create 例項已經建立完成,屬性已經繫結 beforemount 模板編譯之前 mounted 模板編譯之後 beforeupdate 元件更新之前 updated 元件更新完畢 beforedestroy 元件銷毀之前 destroye...

vue生命週期

vue把整個生命週期劃分為建立 掛載 更新 銷毀等階段,每個階段都會給一些 鉤子 讓我們來做一些我們想實現的動作。學習例項的生命週期,能幫助我們理解vue例項的運作機制,更好地合理利用各個鉤子來完成我們的業務 我們分別來看看這幾個階段 1.beforecreate 此階段為例項初始化之後,此時的資料...

Vue 生命週期

import vue from vue el root 沒有的話,使用render,繼續沒有,就把el的outerhtml編譯成模板 template temp data beforecreate created el是原來的el beforemount 渲染函式 render h this.tex...