vue源碼解析-生命鉤子

 vue的生命週期大概分爲:beforeCreate/create、beforeMount/mounted、beforeUpdate/updated、beforeDestroy/destroyedvue

各階段發生的事以下:服務器

beforeCreate

這個鉤子是在new Vue()以後觸發的第一個鉤子,在此階段爲數據觀測階段和event/watcher事件配置階段,data/methods/computed/watch以上的數據均不能訪問。$el/data的值都爲undefined。函數

create

這個鉤子在實例建立完成後發生,此階段完成了數據觀測,能夠使用數據,更改數據。此時更改數據不會觸發update函數,能夠作一些初始數據的獲取。因爲視圖還沒出現,若是請求過多,會出現白屏現象。在此階段沒法與DOM進行交互,若是想要,能夠經過vm.$nextTick來訪問DOM3d

beforeMount

這個鉤子完成虛擬DOM的建立,能夠對數據進行更改,不會觸發update。相關的render函數被調用,$el的值爲虛擬的元素節點。cdn

mounted

在此鉤子,虛擬的DOM節點被真實的DOM節點替換,並將其插入到DOM樹中,真實的DOM掛載完畢,完成雙向數據綁定,能夠訪問到DOM節點,能夠使用$ref屬性對DOM進行操做,也能夠向後臺發送請求,拿到返回數據。blog

beforeUpdate

這個鉤子能夠進一步更新狀態,不會觸發附加的重渲染過程。該鉤子在服務器端渲染期間不被調用。生命週期

updated

這個鉤子被調用時,組件DOM已經更新,能夠執行依賴於DOM的操做。在大多數狀況下,應該避免在此期間更改狀態,由於這可能會致使更新無限循環。事件

beforeDestroy

這個鉤子,實例仍然可用,能夠進行收尾工做,好比:清楚計時器。此狗子在服務器端渲染期間不被調用。it

destroyed

這個鉤子發生在實例銷燬以後,Vue 實例指示的全部東西都會解綁定,全部的事件監聽器會被移除,全部的子實例也會被銷燬。io

相關文章
相關標籤/搜索