生命周期圖示(來自 vue 官網)
一、⽣命周期是什么?
Vue 實例有⼀個完整的⽣命周期,也就是從開始創建、初始化數據、編譯模版、掛載 Dom -> 渲染、更
新 -> 渲染、卸載等⼀系列過程,我們稱這是 Vue 的⽣命周期。
二、各個⽣命周期的作⽤
1、 創建前(beforeCreate):對應鈎子函數是 beforeCreate, 組件實例被創建之初,組件的屬性⽣效之前。實例初始化階段,數據觀察和事件機制都還沒有形成,不能獲取到DOM 節點
2、 創建后 (created): 對應鈎子函數是Created, 組件實例已經完全創建,屬性也綁定,但真實 dom 還沒有⽣成,$el 還不可⽤。(vue 實例已創建,但是還是不能獲取 DOM 節點)
3、 載入前 (beforeMount): 對應鈎子函數 beforeMount, 在掛載開始之前被調⽤:相關的 render 函數⾸次被調⽤。仍然不能獲取 DOM 元素,此時 vue 的根元素已經創建,下面 vue 對 DOM 的操作將圍繞這個根節點展開。beforeMount 是過渡性階段,一個項目一般只能用一次
4、 載入后 (mounted): 對應鈎子函數 mounted,el 被新創建的 vm.$el 替換,並掛載到實例上去之后調⽤該鈎⼦。 使用得最多的鈎子函數, 一般的異步請求都寫在這里,此時的vue 和 DOM 都已經渲染出來了
5、 更新前 (beforeUpdate): 對應鈎子函數 beforeUpdate, 組件數據更新之前調⽤,發⽣在虛擬 DOM 打補丁之前。VUE 遵循數據驅動 DOM 的原則, beforeUpdate 函數在數據更新后雖然沒有立即更新數據,但是 DOM 的數據會改變,這是 VUE 雙向數據綁定的作用
6、 更新后 (updated): 對應鈎子函數 updated,組件數據更新之后。DOM 會同步更改過的內容
7、銷毀前 (beforeDestroy): 對應鈎子函數 beforeDestroy, 組件銷毀前調⽤。在上一階段 VUE 已經成功通過 數據驅動DOM 更新,當我們不再需要 VUE 操縱 DOM, 就需要銷毀,也就是清除 VUE 與 DOM 的關聯,調用 destroy方法 可以銷毀當前組件,在銷毀前,會調用 beforeDestroy 鈎子函數
8、 銷毀后 (destroyed): 對應鈎子函數 destroy, 組件銷毀后調⽤。銷毀后,會調用 destroyed 鈎子函數