每個 vue 例項在被建立時都要經過一系列的初始化過程——例如,需要設定資料監聽、編譯模板、將例項掛載到 dom 並在資料變化時更新 dom 等。同時在這個過程中也會執行一些叫做生命週期鉤子的函式,這給了使用者在不同階段新增自己的**的機會。
vue有8種生命週期函式:
鉤子函式
觸發的行為
在此階段可以做的事情
beforecreadted
在例項建立以前呼叫,沒有例項化,資料訪問不到
vue例項的掛載元素$el和資料物件data都為undefined,還未初始化。
加loading事件
created
例項被建立完成後呼叫
vue例項的資料物件data有了,$el還沒有
結束loading、請求資料為mounted渲染做準備
能拿到資料,能修改資料,
且修改資料不會觸發updated beforeupdate鉤子函式
可以在這個鉤子函式裡發請求,訪問後端介面拿資料
判斷是否存在el,是否存在template,如果二者都有,以template為主優先, 如果沒有template,會選擇el模板。
beforemount
vue例項的$el和data都初始化了,但還是虛擬的dom節點,具體的data.filter還未替換。
可以訪問資料,也可以更改資料
且修改資料不會觸發updated beforeupdate鉤子函式
在beforemount和mounted之間隱藏了乙個render函式,千萬不能寫,會覆蓋系統函式
mounted
vue例項掛載完成,data.filter成功渲染
配合路由鉤子使用
可以訪問和更改資料,且修改資料會觸發updated beforeupdate鉤子函式
beforeupdate
data更新時觸發
updated
data更新時觸發
beforeupdate 、updated 可以監控data裡的所有資料變化
不要在update beforeupdate修改不定資料,否則會引起死迴圈
監聽data裡的所有的資料,非updated莫屬
beforedestroy
元件銷毀時觸發
可以清理非vue資源,防止記憶體洩露
destroyed
元件銷毀時觸發,vue例項解除了事件監聽以及和dom的繫結(無響應了),但dom節點依舊存在
元件銷毀時進行提示
注意:destroyed鉤子函式有一點一定要特別注意:在執行destroy方法後,對data的改變不會再觸發週期函式,此時的vue例項已經解除了事件監聽以及和dom的繫結,但是dom結構依然存在。所以對於實時顯示的通知型元件,在他destroyed之前,我們必須手動removechild()刪除該節點;否則,dom節點還是存在,影響瀏覽器效能。
Vue鉤子函式生命週期例項詳解
vue生命週期簡介 vue例項有乙個完整的生命週期,也就是從開始建立 初始化資料 編譯模板 掛載dom 渲染 更新 渲染 解除安裝等一系列過程,我們稱這是vue的生命週期。通俗說就是vue例項從建立到銷毀的過程,就是生命週期。在vue的整個生命週期中,它提供了一系列的事件,可以讓我們在事件觸發時註冊...
vue生命週期,鉤子函式
一 vue生命週期簡介 咱們從上圖可以很明顯的看出現在vue2.0都包括了哪些生命週期的函式了,總結一下,對官方文件的那張圖簡化一下,就得到了這張圖。二 生命週期 對於執行順序和什麼時候執行,看上面圖基本有個了解了。下面我們將結合 去看看鉤子函式的執行。鉤子函式 1.create 和 mounted...
vue 生命週期(鉤子函式)
new vue 例項物件,下一步進入beforcreate 狀態 當使用new vue 建立物件之前,執行的事件 這裡可以做載入動畫 下一步,進入created 然後,他會檢測是否有el屬性,如果有在檢測template屬性型別,是一段渲染的函式還是一段html 然後就進入了beforemount狀...