一、vue3 生命周期函數
setup() :開始創建組件之前,在beforeCreate和created之前執行。創建的是data和method
onBeforeMount() : 組件掛載到節點上之前執行的函數。
onMounted() : 組件掛載完成后執行的函數。
onBeforeUpdate(): 組件更新之前執行的函數。
onUpdated(): 組件更新完成之后執行的函數。
onBeforeUnmount(): 組件卸載之前執行的函數。
onUnmounted(): 組件卸載完成后執行的函數
onActivated(): 被包含在中的組件,會多出兩個生命周期鈎子函數。被激活時執行。
onDeactivated(): 比如從 A 組件,切換到 B 組件,A 組件消失時執行。
onErrorCaptured(): 當捕獲一個來自子孫組件的異常時激活鈎子函數。
二、vue2.x 生命周期
beforeCreate():實例在內存中被創建出來,還沒有初始化好data和methods屬性。
create():實例已經在內存中創建,已經初始化好data和method,此時還沒有開始編譯模板。
beforeMount():已經完成了模板的編譯,還沒有掛載到頁面中。
mounted():將編譯好的模板掛載到頁面指定的容器中顯示。
beforeUpdate():狀態更新之前執行函數,此時data中的狀態值是最新的,但是界面上顯示的數據還是舊的,因為還沒有開始重新渲染DOM節點。
updated():此時data中的狀態值和界面上顯示的數據都已經完成了跟新,界面已經被重新渲染好了!
beforeDestroy():實例被銷毀之前。
destroyed():實例銷毀后調用,Vue實例指示的所有東西都會解綁,所有的事件監聽器都會被移除,所有的子實例也都會被銷毀。組件已經被完全銷毀,此時組建中所有data、methods、以及過濾器,指令等,都已經不可用了。
在實際開發項目中這些鈎子函數如何使用呢?
beforecreate : 可以在這函數中初始化加載動畫
created :做一些數據初始化,實現函數自執行
mounted: 調用后台接口進行網絡請求,拿回數據,配合路由鈎子做一些事情
destoryed :當前組件已被刪除,清空相關內容
mounted中做網絡請求和重新賦值,在destoryed中清空頁面數據。
還有個比較特殊的鈎子函數nextTick()
,數據更新后的dom操作,寫在該函數里面
三、與vue2的對比
Vue2--------------vue3
beforeCreate -> setup()
created -> setup()
beforeMount -> onBeforeMount
mounted -> onMounted
beforeUpdate -> onBeforeUpdate
updated -> onUpdated
beforeDestroy -> onBeforeUnmount
destroyed -> onUnmounted
activated -> onActivated
deactivated -> onDeactivated
errorCaptured -> onErrorCaptured