Vue生命周期區(qū)別詳解
生命周期分類(lèi)
vue每個(gè)組件都是獨(dú)立的,每個(gè)組件都有一個(gè)屬于它的生命周期,
從一個(gè)組件創(chuàng)建、數(shù)據(jù)初始化、掛載、更新、銷(xiāo)毀,這就是一個(gè)組件所謂的生命周期。
在組件中具體的方法有:
beforeCreate
created
beforeMount
mounted
beforeUpdate
updated
beforeDestroy
destroyed
beforeCreate( 創(chuàng)建前 )
在實(shí)例初始化之后,數(shù)據(jù)觀測(cè)和事件配置之前被調(diào)用,此時(shí)組件的選項(xiàng)對(duì)象還未創(chuàng)建,el 和 data 并未初始化,因此無(wú)法訪問(wèn)methods,
data, computed等上的方法和數(shù)據(jù)。
created ( 創(chuàng)建后 )
實(shí)例已經(jīng)創(chuàng)建完成之后被調(diào)用,在這一步,實(shí)例已完成以下配置:數(shù)據(jù)觀測(cè)、屬性和方法的運(yùn)算,watch/event事件回調(diào),完成了data 數(shù)據(jù)的初始化,el沒(méi)有。 然而,掛在階段還沒(méi)有開(kāi)始, $el屬性目前不可見(jiàn),這是一個(gè)常用的生命周期,因?yàn)槟憧梢哉{(diào)用methods中的方法,改變data中的數(shù)據(jù),并且修改可以通過(guò)vue的響應(yīng)式綁定體現(xiàn)在頁(yè)面上,,獲取computed中的計(jì)算屬性等等,通常我們可以在這里對(duì)實(shí)例進(jìn)行預(yù)處理
beforeMount(掛載前)
掛在開(kāi)始之前被調(diào)用,相關(guān)的render函數(shù)首次被調(diào)用(虛擬DOM),實(shí)例已完成以下的配置: 編譯模板,把data里面的數(shù)據(jù)和模板生成html,完成了el和data 初始化,注意此時(shí)還沒(méi)有掛在html到頁(yè)面上。
mounted(掛載后)
掛在完成,也就是模板中的HTML渲染到HTML頁(yè)面中,此時(shí)一般可以做一些ajax操作,mounted只會(huì)執(zhí)行一次。
beforeUpdate(更新前)
在數(shù)據(jù)更新之前被調(diào)用,發(fā)生在虛擬DOM重新渲染和打補(bǔ)丁之前,可以在該鉤子中進(jìn)一步地更改狀態(tài),不會(huì)觸發(fā)附加地重渲染過(guò)程
updated(更新后)
在由于數(shù)據(jù)更改導(dǎo)致地虛擬DOM重新渲染和打補(bǔ)丁只會(huì)調(diào)用,調(diào)用時(shí),組件DOM已經(jīng)更新,所以可以執(zhí)行依賴(lài)于DOM的操作,然后在大多是情況下,應(yīng)該避免在此期間更改狀態(tài),因?yàn)檫@可能會(huì)導(dǎo)致更新無(wú)限循環(huán),該鉤子在服務(wù)器端渲染期間不被調(diào)用
beforeDestroy(銷(xiāo)毀前)
在實(shí)例銷(xiāo)毀之前調(diào)用,實(shí)例仍然完全可用,
這一步還可以用this來(lái)獲取實(shí)例,
一般在這一步做一些重置的操作,比如清除掉組件中的定時(shí)器 和 監(jiān)聽(tīng)的dom事件
destroyed(銷(xiāo)毀后)
在實(shí)例銷(xiāo)毀之后調(diào)用,調(diào)用后,所以的事件監(jiān)聽(tīng)器會(huì)被移出,所有的子實(shí)例也會(huì)被銷(xiāo)毀,該鉤子在服務(wù)器端渲染期間不被調(diào)用
vue實(shí)例已經(jīng)解除了事件監(jiān)聽(tīng)以及dom的綁定,但是dom結(jié)構(gòu)依然存在
執(zhí)行順序(圖示)
到此這篇關(guān)于Vue生命周期區(qū)別詳解的文章就介紹到這了,更多相關(guān)Vue生命周期內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決vue中無(wú)法動(dòng)態(tài)修改jqgrid組件 url地址的問(wèn)題
下面小編就為大家分享一篇解決vue中無(wú)法動(dòng)態(tài)修改jqgrid組件 url地址的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-03-03使用Vue做一個(gè)簡(jiǎn)單的todo應(yīng)用的三種方式的示例代碼
這篇文章主要介紹了使用Vue做一個(gè)簡(jiǎn)單的todo應(yīng)用的三種方式的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-10-10Vue報(bào)錯(cuò)ERR_OSSL_EVP_UNSUPPORTED解決方法
Vue項(xiàng)目啟動(dòng)時(shí)報(bào)錯(cuò)ERR_OSSL_EVP_UNSUPPORTED,本文主要介紹了Vue報(bào)錯(cuò)ERR_OSSL_EVP_UNSUPPORTED解決方法,具有一定的參考價(jià)值,感興趣的可以了解一下2024-08-08使用Webpack 搭建 Vue3 開(kāi)發(fā)環(huán)境過(guò)程詳解
這篇文章主要介紹了使用Webpack 搭建 Vue3 開(kāi)發(fā)環(huán)境過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07vue路由 遍歷生成復(fù)數(shù)router-link的例子
今天小編就為大家分享一篇vue路由 遍歷生成復(fù)數(shù)router-link的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-10-10vue自定義switch開(kāi)關(guān)組件,實(shí)現(xiàn)樣式可自行更改
今天小編就為大家分享一篇vue自定義switch開(kāi)關(guān)組件,實(shí)現(xiàn)樣式可自行更改,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-11-11