總共分為8個階段,具體為:建立前/後,載入前/後,更新前/後,銷毀前/後。
建立前/後: 在beforeCreated階段:ue執行個體的挂載元素$el和資料對象data都為undefined,還未初始化;在created階段,vue執行個體的資料對象data有了,$el還沒有。
載入前/後:在beforeMount階段,vue執行個體的$el和data都初始化了,但還是挂載之前為虛拟的dom節點,data.message還未替換;在mounted階段,vue執行個體挂載完成,data.message成功渲染。
更新前/後:當data變化時,會觸發beforeUpdate和updated方法。
銷毀前/後:在執行destroy方法後,對data的改變不會再觸發周期函數,說明此時vue執行個體已經解除了事件監聽以及和dom的綁定,但是dom結構依然存在。
具體講解及應用
beforeCreate:在new一個vue執行個體後,隻有一些預設的生命周期鈎子和預設事件,其他的東西都還沒建立,data和methods中的資料都還沒有初始化。不能在這個階段使用data中的資料和methods中的方法
create:data 和 methods都已經被初始化好了,如果要調用 methods 中的方法,或者操作 data 中的資料,最早可以在這個階段中操作
beforeMount:執行到這個鈎子的時候,在記憶體中已經編譯好了模闆了,但是還沒有挂載到頁面中,此時,頁面還是舊的,不能直接操作頁面的dom和擷取dom對象
mounted:執行到這個鈎子的時候,就表示Vue執行個體已經初始化完成了。此時元件脫離了建立階段,進入到了運作階段。如果我們想要通過插件操作頁面上的DOM節點,最早可以在和這個階段中進行
beforeUpdate: 當執行這個鈎子時,頁面中的顯示的資料還是舊的,data中的資料是更新後的,頁面還沒有和最新的資料保持同步
updated:頁面顯示的資料和data中的資料已經保持同步了,都是最新的
beforeDestory:Vue執行個體從運作階段進入到了銷毀階段,這個時候上所有的data和 methods、指令、過濾器 ……都是處于可用狀态。還沒有真正被銷毀
destroyed: 這個時候上所有的data和methods、指令、過濾器 ……都是處于不可用狀态。元件已經被銷毀了。