當我們進入Vue應(yīng)用時,Vue會在掛載過程中執(zhí)行一系列的鉤子函數(shù)。
// 創(chuàng)建Vue實例 new Vue({ el: '#app', beforeCreate() { console.log('beforeCreate') }, created() { console.log('created') }, beforeMount() { console.log('beforeMount') }, mounted() { console.log('mounted') }, beforeUpdate() { console.log('beforeUpdate') }, updated() { console.log('updated') }, beforeDestroy() { console.log('beforeDestroy') }, destroyed() { console.log('destroyed') } })
在beforeCreate鉤子函數(shù)中,Vue實例還未被創(chuàng)建并且數(shù)據(jù)也還未被觀測。在created鉤子函數(shù)中,Vue實例和數(shù)據(jù)已經(jīng)被觀測,但是DOM還未被渲染。
當Vue實例被掛載到DOM上時,會先執(zhí)行beforeMount鉤子函數(shù),該函數(shù)在DOM渲染之前被調(diào)用。
mounted鉤子函數(shù)是在Vue實例掛載到DOM上后被調(diào)用的函數(shù),該函數(shù)中DOM已經(jīng)被渲染,可以訪問DOM元素以及操作DOM元素。
當Vue實例的數(shù)據(jù)發(fā)生變化時,會先執(zhí)行beforeUpdate鉤子函數(shù)。在該函數(shù)中可以進行一些數(shù)據(jù)處理,但是不能對DOM進行操作。
在updated鉤子函數(shù)中,Vue實例中發(fā)生的數(shù)據(jù)變化已經(jīng)被應(yīng)用于DOM,并且DOM已經(jīng)被重新渲染。
當我們需要銷毀Vue實例時,會先執(zhí)行beforeDestroy鉤子函數(shù),在該函數(shù)中可以進行一些實例銷毀之前的清理工作。
當Vue實例被銷毀時,會執(zhí)行destroyed鉤子函數(shù)。在該函數(shù)中一般進行一些清理工作,例如清除事件監(jiān)聽器、清除計時器和請求等操作。