什么是生命周期
Vue實(shí)例有一個(gè)完整的生命周期,也就是從開始創(chuàng)建那婉、初始化數(shù)據(jù)板甘、編譯模板、掛載Dom详炬、渲染→更新→渲染盐类、卸載等一系列過程,我們稱這是Vue的生命周期呛谜。通俗說就是Vue實(shí)例從創(chuàng)建到銷毀的過程在跳,就是生命周期。
在Vue的整個(gè)生命周期中呻率,它提供了一系列的事件硬毕,可以讓我們在事件觸發(fā)時(shí)注冊js方法,可以讓我們用自己注冊的js方法控制整個(gè)大局礼仗,在這些事件響應(yīng)方法中的this直接指向的是vue的實(shí)例吐咳。
特別值得注意的是created鉤子函數(shù)和mounted鉤子函數(shù)的區(qū)別
image.png
每個(gè)鉤子函數(shù)都在啥時(shí)間觸發(fā)
beforeCreate
在實(shí)例初始化之后逻悠,數(shù)據(jù)觀測(data observer) 和 event/watcher 事件配置之前被調(diào)用。
created
實(shí)例已經(jīng)創(chuàng)建完成之后被調(diào)用韭脊。在這一步童谒,實(shí)例已完成以下的配置:數(shù)據(jù)觀測(data observer),屬性和方法的運(yùn)算沪羔, watch/event 事件回調(diào)饥伊。然而,掛載階段還沒開始蔫饰,$el 屬性目前不可見琅豆。
beforeMount
在掛載開始之前被調(diào)用:相關(guān)的 render 函數(shù)首次被調(diào)用。
mounted
el 被新創(chuàng)建的 vm.$el 替換篓吁,并掛載到實(shí)例上去之后調(diào)用該鉤子茫因。
beforeUpdate
數(shù)據(jù)更新時(shí)調(diào)用,發(fā)生在虛擬 DOM 重新渲染和打補(bǔ)丁之前杖剪。 你可以在這個(gè)鉤子中進(jìn)一步地更改狀態(tài)冻押,這不會(huì)觸發(fā)附加的重渲染過程。
updated
由于數(shù)據(jù)更改導(dǎo)致的虛擬 DOM 重新渲染和打補(bǔ)丁盛嘿,在這之后會(huì)調(diào)用該鉤子洛巢。
當(dāng)這個(gè)鉤子被調(diào)用時(shí),組件 DOM 已經(jīng)更新次兆,所以你現(xiàn)在可以執(zhí)行依賴于 DOM 的操作稿茉。然而在大多數(shù)情況下,你應(yīng)該避免在此期間更改狀態(tài)类垦,因?yàn)檫@可能會(huì)導(dǎo)致更新無限循環(huán)狈邑。
該鉤子在服務(wù)器端渲染期間不被調(diào)用城须。
beforeDestroy
實(shí)例銷毀之前調(diào)用蚤认。在這一步,實(shí)例仍然完全可用糕伐。
destroyed
Vue 實(shí)例銷毀后調(diào)用砰琢。調(diào)用后,Vue 實(shí)例指示的所有東西都會(huì)解綁定良瞧,所有的事件監(jiān)聽器會(huì)被移除陪汽,所有的子實(shí)例也會(huì)被銷毀。 該鉤子在服務(wù)器端渲染期間不被調(diào)用褥蚯。