Vue組件生命周期運(yùn)行原理解析
Vue實(shí)例有一個(gè)完整的生命周期,從開(kāi)始創(chuàng)建、初始化數(shù)據(jù)、編譯模板、掛在DOM、渲染-更新-渲染、卸載等一系列過(guò)程,我們成為Vue 實(shí)例的生命周期,鉤子就是在某個(gè)階段給你一個(gè)做某些處理的機(jī)會(huì)。
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ù)處理,也有一些童鞋喜歡在這里發(fā)ajax請(qǐng)求,值得注意的是,這個(gè)周期中是沒(méi)有什么方法來(lái)對(duì)實(shí)例化過(guò)程進(jìn)行攔截的,因此假如有某些數(shù)據(jù)必須獲取才允許進(jìn)入頁(yè)面的話,并不適合在這個(gè)方法發(fā)請(qǐng)求,建議在組件路由鉤子beforeRouteEnter中完成。
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)用
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. XML入門(mén)的常見(jiàn)問(wèn)題(三)2. XML 增、刪、改和查示例3. XML 非法字符(轉(zhuǎn)義字符)4. WMLScript的語(yǔ)法基礎(chǔ)5. JavaScript中顏色模型的基礎(chǔ)知識(shí)與應(yīng)用詳解6. 不要在HTML中濫用div7. ASP動(dòng)態(tài)include文件8. el-input無(wú)法輸入的問(wèn)題和表單驗(yàn)證失敗問(wèn)題解決9. 前端html+css實(shí)現(xiàn)動(dòng)態(tài)生日快樂(lè)代碼10. CSS3實(shí)例分享之多重背景的實(shí)現(xiàn)(Multiple backgrounds)
