vue生命週期

爱吃饭团發表於2024-04-23

Vue在GitHub上面的star數量已經超過了react,雖然npm包下載的數量還沒有react多,但是Vue上升的勢頭真的很猛。

Vue生命週期2.0和1.0差別還是有一點的,生命週期的部落格文章百度也是很多,今天我簡單提一下生命週期,然後說一下一些可能比較沒人注意的點。

先上Vue官網的生命週期圖片:

vue生命週期

先羅列出生命週期然後一個一個講解

beforeCreate

created

beforeMount

mounted

beforeUpdate

updated

beforeDestroy

destroyed

beforeCreate

例項元件剛建立,元素DOM和資料都還沒有初始化,暫時不知道能在這個週期裡面進行生命操作。

created

資料data已經初始化完成,方法也已經可以呼叫,但是DOM為渲染。在這個週期裡面如果進行請求是可以改變資料並渲染,由於DOM未掛載,請求過多或者佔用時間過長會導致頁面線上空白。

beforeMount

DOM掛載完成,資料也初始化完成,但是資料的雙向繫結還是顯示{{}},這是因為Vue採用了Virtual DOM(虛擬Dom)技術。先佔住了一個坑。

mounted

資料和DOM都完成掛載,在上一個週期佔位的資料把值給渲染進去。一般請求會放在這個地方,因為這邊請求改變資料之後剛好能渲染。

beforeUpdate

只要是頁面資料改變了都會觸發,資料更新之前,頁面資料還是原來的資料,當你請求賦值一個資料的時候會執行這個週期,如果沒有資料改變不執行。

updated

只要是頁面資料改變了都會觸發,資料更新完畢,頁面的資料是更新完成的。beforeUpdate和updated要謹慎使用,因為頁面更新資料的時候都會觸發,在這裡運算元據很影響效能和容易死迴圈。

beforeDestroy

這個週期是在元件銷燬之前執行,在我專案開發中,覺得這個其實有點類似路由鉤子beforeRouterLeave,都是在路由離開的時候執行,只不過beforeDestroy無法阻止路由跳轉,但是可以做一些路由離開的時候操作,因為這個週期裡面還可以使用data和method。比如一個倒數計時元件,如果在路由跳轉的時候沒有清除,這個定時器還是在的,這時候就可以在這個裡面清除計時器。

Destroyed

說實在的,我還真的不知道這個週期跟beforeDestroy有什麼區別,我在這個週期裡面呼叫data的資料和methods的方法都能呼叫,所以我會覺得跟beforeDestroy是一樣的。

歡迎關注 Coding個人筆記 公眾號

相關文章