Vue在GitHub上面的star數量已經超過了react,雖然npm包下載的數量還沒有react多,但是Vue上升的勢頭真的很猛。
Vue生命週期2.0和1.0差別還是有一點的,生命週期的部落格文章百度也是很多,今天我簡單提一下生命週期,然後說一下一些可能比較沒人注意的點。
先上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個人筆記 公眾號