Vue組件生命周期運(yùn)行原理解析
Vue實(shí)例有一個(gè)完整的生命周期,從開始創(chuàng)建、初始化數(shù)據(jù)、編譯模板、掛在DOM、渲染-更新-渲染、卸載等一系列過程,我們成為Vue 實(shí)例的生命周期,鉤子就是在某個(gè)階段給你一個(gè)做某些處理的機(jī)會(huì)。

beforeCreate( 創(chuàng)建前 )
在實(shí)例初始化之后,數(shù)據(jù)觀測和事件配置之前被調(diào)用,此時(shí)組件的選項(xiàng)對(duì)象還未創(chuàng)建,el 和 data 并未初始化,因此無法訪問methods, data, computed等上的方法和數(shù)據(jù)。
created ( 創(chuàng)建后 )
實(shí)例已經(jīng)創(chuàng)建完成之后被調(diào)用,在這一步,實(shí)例已完成以下配置:數(shù)據(jù)觀測、屬性和方法的運(yùn)算,watch/event事件回調(diào),完成了data 數(shù)據(jù)的初始化,el沒有。 然而,掛在階段還沒有開始, $el屬性目前不可見,這是一個(gè)常用的生命周期,因?yàn)槟憧梢哉{(diào)用methods中的方法,改變data中的數(shù)據(jù),并且修改可以通過vue的響應(yīng)式綁定體現(xiàn)在頁面上,,獲取computed中的計(jì)算屬性等等,通常我們可以在這里對(duì)實(shí)例進(jìn)行預(yù)處理,也有一些童鞋喜歡在這里發(fā)ajax請(qǐng)求,值得注意的是,這個(gè)周期中是沒有什么方法來對(duì)實(shí)例化過程進(jìn)行攔截的,因此假如有某些數(shù)據(jù)必須獲取才允許進(jìn)入頁面的話,并不適合在這個(gè)方法發(fā)請(qǐng)求,建議在組件路由鉤子beforeRouteEnter中完成。
beforeMount
掛在開始之前被調(diào)用,相關(guān)的render函數(shù)首次被調(diào)用(虛擬DOM),實(shí)例已完成以下的配置: 編譯模板,把data里面的數(shù)據(jù)和模板生成html,完成了el和data 初始化,注意此時(shí)還沒有掛在html到頁面上。
mounted
掛在完成,也就是模板中的HTML渲染到HTML頁面中,此時(shí)一般可以做一些ajax操作,mounted只會(huì)執(zhí)行一次。
beforeUpdate
在數(shù)據(jù)更新之前被調(diào)用,發(fā)生在虛擬DOM重新渲染和打補(bǔ)丁之前,可以在該鉤子中進(jìn)一步地更改狀態(tài),不會(huì)觸發(fā)附加地重渲染過程
updated(更新后)
在由于數(shù)據(jù)更改導(dǎo)致地虛擬DOM重新渲染和打補(bǔ)丁只會(huì)調(diào)用,調(diào)用時(shí),組件DOM已經(jīng)更新,所以可以執(zhí)行依賴于DOM的操作,然后在大多是情況下,應(yīng)該避免在此期間更改狀態(tài),因?yàn)檫@可能會(huì)導(dǎo)致更新無限循環(huán),該鉤子在服務(wù)器端渲染期間不被調(diào)用
beforeDestroy(銷毀前)
在實(shí)例銷毀之前調(diào)用,實(shí)例仍然完全可用,
這一步還可以用this來獲取實(shí)例,
一般在這一步做一些重置的操作,比如清除掉組件中的定時(shí)器 和 監(jiān)聽的dom事件
destroyed(銷毀后)
在實(shí)例銷毀之后調(diào)用,調(diào)用后,所以的事件監(jiān)聽器會(huì)被移出,所有的子實(shí)例也會(huì)被銷毀,該鉤子在服務(wù)器端渲染期間不被調(diào)用
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. 解決Android studio xml界面無法預(yù)覽問題2. Spring Boot和Thymeleaf整合結(jié)合JPA實(shí)現(xiàn)分頁效果(實(shí)例代碼)3. 詳解Android studio 動(dòng)態(tài)fragment的用法4. 圖文詳解vue中proto文件的函數(shù)調(diào)用5. 什么是python的自省6. php模擬實(shí)現(xiàn)斗地主發(fā)牌7. Vue封裝一個(gè)TodoList的案例與瀏覽器本地緩存的應(yīng)用實(shí)現(xiàn)8. .Net Core使用Coravel實(shí)現(xiàn)任務(wù)調(diào)度的完整步驟9. vue 使用localstorage實(shí)現(xiàn)面包屑的操作10. Vuex localStorage的具體使用

網(wǎng)公網(wǎng)安備