什么是Vue的生命周期
vue的生命周期是從vue被創(chuàng)建開始直到其被銷毀為止的過程,它包含了beforeCreate
,created
,beforeMount
,mounted
,beforeUpdate
,updated
,actived
,deactived
,beforeDestroy
,destroyed
.在2.5.0之后又新增了errorCaptured
.
beforeCreate
在實例初始化之后,數(shù)據(jù)觀測 (data observer) 和 event/watcher 事件配置之前被調(diào)用。
created
在實例創(chuàng)建完成后被立即調(diào)用。在這一步,實例已完成以下的配置:數(shù)據(jù)觀測 (data observer),屬性和方法的運算,watch/event 事件回調(diào)。然而,掛載階段還沒開始,$el 屬性目前不可見。
beforeMount
在掛載開始之前被調(diào)用:相關(guān)的 render 函數(shù)首次被調(diào)用。
該鉤子在服務(wù)器端渲染期間不被調(diào)用。
mounted
el被新創(chuàng)建的vm.$el
替換,并掛載到實例上去之后調(diào)用該鉤子。如果root實例掛載了一個文檔內(nèi)元素,當(dāng)mounted
被調(diào)用時vm.$el
也在文檔內(nèi)。
注意mounted
不會承諾所有的子組件也都一起被掛載。如果你希望等到整個視圖都渲染完畢,可以用 vm.$nextTick
替換掉 mounted
:
mounted: function () {
this.$nextTick(function () {
// Code that will run only after the
// entire view has been rendered
})
}
該鉤子在服務(wù)器端渲染期間不被調(diào)用。
beforeUpdate
數(shù)據(jù)更新時調(diào)用,發(fā)生在虛擬 DOM 打補丁之前。這里適合在更新之前訪問現(xiàn)有的 DOM,比如手動移除已添加的事件監(jiān)聽器。
該鉤子在服務(wù)器端渲染期間不被調(diào)用,因為只有初次渲染會在服務(wù)端進(jìn)行。
update
由于數(shù)據(jù)更改導(dǎo)致的虛擬 DOM 重新渲染和打補丁,在這之后會調(diào)用該鉤子。
當(dāng)這個鉤子被調(diào)用時,組件 DOM 已經(jīng)更新,所以你現(xiàn)在可以執(zhí)行依賴于 DOM 的操作。然而在大多數(shù)情況下,你應(yīng)該避免在此期間更改狀態(tài)。如果要相應(yīng)狀態(tài)改變,通常最好使用計算屬性或 watcher 取而代之。
注意updated
不會承諾所有的子組件也都一起被重繪。如果你希望等到整個視圖都重繪完畢,可以用 vm.$nextTick
替換掉 updated
:
updated: function () {
this.$nextTick(function () {
// Code that will run only after the
// entire view has been re-rendered
})
}
該鉤子在服務(wù)器端渲染期間不被調(diào)用。
actived
keep-alive 組件激活時調(diào)用。
該鉤子在服務(wù)器端渲染期間不被調(diào)用。
deactived
keep-alive 組件停用時調(diào)用。
該鉤子在服務(wù)器端渲染期間不被調(diào)用。
beforeDestroy
實例銷毀之前調(diào)用。在這一步,實例仍然完全可用。
該鉤子在服務(wù)器端渲染期間不被調(diào)用。
destroyed
Vue 實例銷毀后調(diào)用。調(diào)用后,Vue 實例指示的所有東西都會解綁定,所有的事件監(jiān)聽器會被移除,所有的子實例也會被銷毀。
該鉤子在服務(wù)器端渲染期間不被調(diào)用。