注: 本文摘抄自vue官網(wǎng),侵刪姻几。
生命周期圖示
vue官網(wǎng)的生命周期圖示如下
生命周期鉤子
所有生命周期鉤子自動綁定this上下文的實例中宜狐,因此你可以訪問數(shù)據(jù)、對象屬性和方法進(jìn)行運算蛇捌。這意味著你不能使用箭頭函數(shù)來定義生命周期方法(例如:created:()=>this.fetchTodos())抚恒。
- 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 打補(bǔ)丁之前购撼。這里適合在更新之前訪問現(xiàn)有的 DOM跪削,比如手動移除已添加的事件監(jiān)聽器。
該鉤子在服務(wù)器端渲染期間不被調(diào)用迂求,因為只有初次渲染會在服務(wù)端進(jìn)行碾盐。 - updated
由于數(shù)據(jù)更改導(dǎo)致的虛擬DOM重新渲染和打補(bǔ)丁,在這之后會調(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掂榔。
該鉤子在服務(wù)器端渲染期間不被調(diào)用 - beforeDestroy
實例銷毀之前調(diào)用继效。在這一步,實例仍然完全可用装获。
該鉤子在服務(wù)器端渲染期間不被調(diào)用瑞信。 - destroyed
Vue 實例銷毀后調(diào)用。調(diào)用后穴豫,Vue 實例指示的所有東西都會解綁定凡简,所有的事件監(jiān)聽器會被移除,所有的子實例也會被銷毀精肃。
該鉤子在服務(wù)器端渲染期間不被調(diào)用秤涩。