1.在beforeCreate之前的生命周期
這是創(chuàng)建之前的階段耻陕,此時該實例內(nèi)所有東西還沒有創(chuàng)建,所以這個生命周期鉤子函數(shù)中$el,data都是undefined
2.在beforeCreate和created鉤子函數(shù)之間的生命周期
在這個生命周期之間乳蓄,進行初始化事件,進行數(shù)據(jù)的觀測故黑,在created的時候數(shù)據(jù)已經(jīng)和data屬性進行綁定肯污,在這個生命周期鉤子函數(shù)中,可以獲取到data的值并對他進行操作
3.在created和beforeMount間的生命周期
(1)在這一階段彩届,首先會判斷是否有el選項伪冰,如果有的話就繼續(xù)向下編譯,如果沒有el選項樟蠕,則停止編譯贮聂,也就意味著停止了生命周期,直到在該實例上調(diào)用vm.$mount(el)? ? 即動態(tài)引入了el
(2)除了el寨辩,我們還會用到template吓懈,以下為template對生命周期的影響
1.如果vue實例對象中有template參數(shù)選項,則將其作為模板編譯成render函數(shù)
2.如果沒有template選項靡狞,則將外部html作為模板編譯
3.template中的模板優(yōu)先級要高于outer html的優(yōu)先級
所以el的判斷要在template之前耻警,因為vue需要通過el找到對應的outer template
(3)在vue對象中,還有一個render函數(shù)甸怕,它是以createElement作為參數(shù)甘穿,然后做渲染,而且可以直接嵌入JSX
注:綜合排名優(yōu)先級:render函數(shù)>template選項>outer html
4.beforeMount和mounted鉤子函數(shù)之間的生命周期
此時是給vue實例對象添加$el成員梢杭,并且替換掉掛載的DOM單元
5.beforeUpdate鉤子函數(shù)和updated鉤子函數(shù)間的生命周期
當vue發(fā)現(xiàn)data中的數(shù)據(jù)發(fā)生變化温兼,會觸發(fā)對應組件的重新渲染,當數(shù)據(jù)改變后調(diào)用beforeupdate武契,當渲染完成后調(diào)用updated鉤子函數(shù)
data值改變后出發(fā)beforeUpdate鉤子函數(shù)募判,當頁面渲染完成后調(diào)用updated
在mouted鉤子函數(shù)中執(zhí)行修改data的操作會觸發(fā)beforeUpdate缸榛,而他之前的函數(shù)中只要不是可以跳出主線程的數(shù)據(jù)操作,都不會觸發(fā)beforeUpdate兰伤。例如使用setTimeout會使其中代碼跳出主線程到異步線程中,所以它的執(zhí)行會在mounted之后钧排,所以會觸發(fā)beforeUpdate
6.beforeDestroy和destroyed鉤子函數(shù)間的生命周期
beforeDestroy鉤子函數(shù)在實例銷毀之前調(diào)用敦腔,在這一步實例仍然可用,destroyed鉤子函數(shù)在vue實例銷毀后調(diào)用恨溜。調(diào)用后符衔,vue實例指示的所有東西都會解綁定,所有的事件監(jiān)聽器會被移除糟袁,所有的子實例也會被銷毀