什么是vue的鈎子函數?
Vue 實例在被創建時,會經過一系列的初始化過程,初始化過程中會運行一些函數,叫做生命周期鈎子函數,通過運用鈎子函數,用戶在可以在Vue實例初始化的不同階段添加自己的代碼,以此來實現自己想做的事情。鈎子函數在Vue初始化、更新數據、銷毀時會被自動調用。
鈎子函數的生命周期示意圖:
鈎子函數詳解:
-
beforeCreate:vue實例創建初始化后,數據觀測 (data observer) 和event/watch事件配置之前觸發;
- created:在實例創建完成后被立即調用,此時實例已完成數據觀測 (data observer),屬性方法的運算,watch/event 事件回調的配置。然而,掛載階段還沒開始,$el 屬性目前不可見;
- beforeMount:實例掛載開始之前被調用, render 函數首次被調用,該鈎子在服務器端渲染期間不被調用;
- mounted:實例已掛載。
- beforeUpdate:數據更新時調用,發生在虛擬 DOM 打補丁之前,這里適合在更新之前訪問現有的 DOM,比如手動移除已添加的事件監聽器,該鈎子在服務器端渲染期間不被調用,因為只有初次渲染會在服務端進行;
- updated:數據更改會導致虛擬 DOM 重新渲染和打補丁,在這之后會調用updated鈎子。
- beforeDestroy:實例銷毀之前調用。在這一步,實例仍然完全可用,該鈎子在服務器端渲染期間不被調用;
- destroyed:Vue 實例銷毀后調用。調用后,Vue 實例指示的所有東西都會接觸綁定,所有的事件監聽器會被移除,所有的子實例也會被銷毀,該鈎子在服務器端渲染期間不被調用
- activated:當某個組件使用了keep-alive組件緩存時,該組件激活時調用activated鈎子,該鈎子在服務器端渲染期間不被調用;
- deactivated:當某個組件使用了keep-alive組件緩存時,該組件停用時調用deactivated鈎子,該鈎子在服務器端渲染期間不被調用;
- errorCaptured:當捕獲一個來自子孫組件的錯誤時被調用。此鈎子會收到三個參數:錯誤對象、發生錯誤的組件實例以及一個包含錯誤來源信息的字符串。此鈎子可以返回 false 以阻止該錯誤繼續向上傳播。