vue生命週期鉤子函式詳解

2021-08-21 18:56:51 字數 2231 閱讀 3320

先放一張官網生命週期圖:

vue有8種生命週期函式:

鉤子函式

觸發的行為

在此階段可以做的事情

beforecreadted

vue例項的掛載元素$el和資料物件data都為undefined,還未初始化。

加loading事件

created

vue例項的資料物件data有了,$el還沒有

結束loading、請求資料為mounted渲染做準備

beforemount

vue例項的$el和data都初始化了,但還是虛擬的dom節點,具體的data.filter還未替換。

..mounted

vue例項掛載完成,data.filter成功渲染

配合路由鉤子使用

beforeupdate

data更新時觸發

updated

data更新時觸發

資料更新時,做一些處理(此處也可以用watch進行觀測)

beforedestroy

元件銷毀時觸發

destroyed

元件銷毀時觸發,vue例項解除了事件監聽以及和dom的繫結(無響應了),但dom節點依舊存在

元件銷毀時進行提示

測試**:

元件模板自己試著寫就好,此處貼js**

(省略部分**)

export

default

},beforecreate () ,

created () ,

beforemount () ,

mounted () ,

beforeupdate () ,

updated () ,

beforedestroy () ,

destroyed ()

}

效果:

至於destroyed就不好演示了。

destroyed鉤子函式有一點一定要特別注意:在執行destroy方法後,對data的改變不會再觸發週期函式,此時的vue例項已經解除了事件監聽以及和dom的繫結,但是dom結構依然存在。所以對於實時顯示的通知型元件,在他destroyed之前,我們必須手動removechild()刪除該節點;否則,dom節點還是存在,影響瀏覽器效能。

還有一點需要補充:

元件套用時生命週期:

父元件:tabs

子元件:tab、tab-container

我的應用場景是:

tabs>

/*tabs的列印***/

beforemount () ,

mounted () ,

created ()

/*tab的列印***/

beforemount () ,

mounted () ,

created ()

/*tab-container的列印***/

beforemount () ,

mounted () ,

created ()

瀏覽器結果:

結論:先執行父元件的created和beforemounted函式;再按子元件的使用順序,執行子元件的created和beforemounted函式;依舊按照子元件的執行順序執行mounted函式,最後是父元件的mounted函式;

也就是說父元件準備要掛載還沒掛載的時候,子元件先完成掛載,最後父元件再掛載;所以在真正整個大元件掛載完成之前,內部的子元件和父元件之間的資料時可以流通的(好難表達。。。。)

vue生命週期鉤子函式詳解

先放一張官網生命週期圖 vue有8種生命週期函式 鉤子函式 觸發的行為 在此階段可以做的事情 beforecreadted vue例項的掛載元素 el和資料物件data都為undefined,還未初始化。加loading事件 created vue例項的資料物件data有了,el還沒有 結束load...

vue生命週期,鉤子函式

一 vue生命週期簡介 咱們從上圖可以很明顯的看出現在vue2.0都包括了哪些生命週期的函式了,總結一下,對官方文件的那張圖簡化一下,就得到了這張圖。二 生命週期 對於執行順序和什麼時候執行,看上面圖基本有個了解了。下面我們將結合 去看看鉤子函式的執行。鉤子函式 1.create 和 mounted...

vue 生命週期(鉤子函式)

new vue 例項物件,下一步進入beforcreate 狀態 當使用new vue 建立物件之前,執行的事件 這裡可以做載入動畫 下一步,進入created 然後,他會檢測是否有el屬性,如果有在檢測template屬性型別,是一段渲染的函式還是一段html 然後就進入了beforemount狀...