vue組件生命周期

vue組件的生命周期

組件生命周期的三個階段

詳細(xì)解讀vue組件從創(chuàng)建到運行到銷毀的過程


聲明周期的三個階段

BeforeCreate(創(chuàng)建前)

該函數(shù)執(zhí)行在組件創(chuàng)建、數(shù)據(jù)觀測 (data observer) 和 event/watcher 事件配置之前,實例初始化之后被調(diào)用。數(shù)據(jù)還沒有初始化

在該階段組件未創(chuàng)建,不能訪問數(shù)據(jù),組件中的 data,ref 均為 undefined。

Created(創(chuàng)建后)

在組件創(chuàng)建完成后立即調(diào)用
在這一步 實例已經(jīng)完成了數(shù)據(jù)觀測 屬性和方法的運算 watch、event事件回調(diào)
但是還沒有渲染成html模板 組件中的data已經(jīng)存在 可以進(jìn)行操作了 但是el仍然是undefiend 因為掛載階段還沒有開始,$el屬性尚不可用

數(shù)據(jù)已經(jīng)完成了初始化 dom結(jié)構(gòu)未生成

經(jīng)常在它里面 調(diào)用methods中的方法 請求服務(wù)器中的數(shù)據(jù) 并且把請求到的數(shù)據(jù) 轉(zhuǎn)存到data中 供template模板渲染使用

BeforeMount(掛載前)

該函數(shù)在掛載之前被調(diào)用,該階段頁面上還沒有渲染,data已經(jīng)初始化完成 ref還不可以操作 render函數(shù)首次被調(diào)用
可以訪問數(shù)據(jù) 編譯模板結(jié)束 虛擬dom已經(jīng)存在

Mounted(掛載后)

該函數(shù)是在組件掛載完成之后執(zhí)行的 這時候el被$el替換,已經(jīng)可以操作ref了
一般在這個階段請求數(shù)據(jù) filter過濾器也是在這個階段生效
服務(wù)器渲染期間不被調(diào)用

如果要操作當(dāng)前組件的dom 最早 只能在mounted階段執(zhí)行

BeforeUpdate(更新前)

在數(shù)據(jù)更新時調(diào)用,在虛擬dom更新前,在特殊情況下,可以講更新前的數(shù)據(jù)存起來,放到之后使用
這里適合在更新前訪問現(xiàn)有的dom比如移除事件監(jiān)聽器
該鉤子只有初次渲染會在服務(wù)端進(jìn)行

data中的數(shù)據(jù)是最新的,且頁面并未和最新的數(shù)據(jù)同步。

Updated(更新后)

由于數(shù)據(jù)更改導(dǎo)致的虛擬 DOM 重新渲染和打補(bǔ)丁,在這之后會調(diào)用該鉤子。當(dāng)這個鉤子被調(diào)用時,組件 DOM 已經(jīng)更新,所以你現(xiàn)在可以執(zhí)行依賴于 DOM 的操作。

頁面也完成了更新,此時,data數(shù)據(jù)是最新的,同時,頁面上呈現(xiàn)的數(shù)據(jù)也只最新的。

當(dāng)數(shù)據(jù)變化后 為了能夠操作到最新的dom結(jié)構(gòu) 必須把代碼寫到updated生命周期

BeforeDestroy(銷毀前)

在實例銷毀之前調(diào)用,這里依然可以操作,可以在這里清除定時器 防止內(nèi)存泄漏

當(dāng)執(zhí)行該生命周期函數(shù)的時候,實例身上所有的data,所有的methods以及過濾器…等都處于可用狀態(tài),并沒有真正執(zhí)行銷毀

Destroyed(銷毀后)

在銷毀后調(diào)用 所有子實例被銷毀 所有的事件監(jiān)聽器會被移除
在服務(wù)器渲染期間不被調(diào)用

此時組件以及被完全銷毀,實例中的所有的數(shù)據(jù)、方法、屬性、過濾器…等都已經(jīng)不可用了

Activated (激活時)

和上面的beforeDestroy和destroyed用法差不多,但是如果我們需要一個實例,在銷毀后再次出現(xiàn)的話,用 beforeDestroy和destroyed的話,就太浪費性能了。實例被激活時使用,用于重復(fù)激活一個實例的時候

被 keep-alive 緩存的組件激活時調(diào)用。

該鉤子在服務(wù)器端渲染期間不被調(diào)用。

Deactivated(停用時)

實例沒有被激活時。

被 keep-alive 緩存的組件停用時調(diào)用。

該鉤子在服務(wù)器端渲染期間不被調(diào)用。

ErrorCaptured (錯誤調(diào)用時)

當(dāng)捕獲一個來自子孫組件的錯誤時被調(diào)用。此鉤子會收到三個參數(shù):錯誤對象、發(fā)生錯誤的組件實例以及一個包含錯誤來源信息的字符串。此鉤子可以返回 false 以阻止該錯誤繼續(xù)向上傳播。

鉤子函數(shù)的執(zhí)行流程

鉤子函數(shù)的時間點
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容