-
什么是vue的生命周期
Vue實例有一個完整的生命周期诞仓,也就是從開始創(chuàng)建蛇损、初始化數(shù)據(jù)赁温、編譯模板、掛載Dom州藕、渲染→更新→渲染、銷毀等一系列過程酝陈,通俗說就是Vue實例從創(chuàng)建到銷毀的過程床玻,就是生命周期。
主要分為幾個簡單沉帮,數(shù)據(jù)初始化锈死,dom 掛載,數(shù)據(jù)更新穆壕,組件卸載待牵,的階段
在一個就是開啟了組件緩存的時候,會有組件啟用和組件停用階段喇勋,每個階段都去前后兩個鉤子除了緩存的那倆缨该。
數(shù)據(jù)初始化階段
beforeCreate:
實例組件剛創(chuàng)建,元素DOM和數(shù)據(jù)都還沒有初始化
在實例初始化之后川背,數(shù)據(jù)觀測 (data observer) 和 event/watcher 事件配置之前被調用贰拿。
created:
數(shù)據(jù)data已經(jīng)初始化完成,方法也已經(jīng)可以調用熄云,但是DOM未渲染膨更。
實例已經(jīng)創(chuàng)建完成之后被調用。
在這一步缴允,實例已完成以下的配置:數(shù)據(jù)觀測 (data observer)荚守,屬性和方法的運算,watch/event 事件回調。然而矗漾,掛載階段還沒開始
dom 掛載階段
beforeMount:
DOM未完成掛載锈候,數(shù)據(jù)也初始化完成,但是數(shù)據(jù)的雙向綁定還是顯示{{}}缩功,這是因為Vue采用了Virtual DOM(虛擬Dom)技術晴及。
在掛載開始之前被調用:相關的 render 函數(shù)首次被調用。
mounted:
數(shù)據(jù)和DOM都完成掛載嫡锌,在上一個周期占位的數(shù)據(jù)把值給渲染進去虑稼。一般請求會放在這個地方,請求改變數(shù)據(jù)之后渲染頁面势木。
數(shù)據(jù)更新階段
beforeUpdate:
只要是頁面數(shù)據(jù)改變了都會觸發(fā)蛛倦,數(shù)據(jù)更新之前,頁面數(shù)據(jù)還是原來的數(shù)據(jù)啦桌,當你請求賦值一個數(shù)據(jù)的時候會執(zhí)行這個周期溯壶,如果沒有數(shù)據(jù)改變不執(zhí)行。
updated:
只要是頁面數(shù)據(jù)改變了都會觸發(fā)甫男,數(shù)據(jù)更新完畢且改,頁面的數(shù)據(jù)是更新完成的。beforeUpdate和updated要謹慎使用板驳,因為頁面更新數(shù)據(jù)的時候都會觸發(fā)又跛,在這里操作數(shù)據(jù)很影響性能和容易死循環(huán)。
updated 不會承諾所有的子組件也都一起被重繪若治。如果你希望等到整個視圖都重繪完畢慨蓝,可以用 vm.$nextTick 替換掉 updated
緩存啟用的時候會有下面兩個鉤子
activated:keep-alive 組件激活時調用。
deactivated:keep-alive 組件停用時調用端幼。
beforeDestroy
這個周期是在組件銷毀之前執(zhí)行礼烈。
Destroyed
這個周期是在組件銷毀之后執(zhí)行。