一、生命周期是什么
生命周期(Life Cycle)的概念應(yīng)用很廣泛,特別是在政治、經(jīng)濟(jì)、環(huán)境、技術(shù)、社會(huì)等諸多領(lǐng)域經(jīng)常出現(xiàn),其基本涵義可以通俗地理解為“從搖籃到墳?zāi)埂保–radle-to-Grave)的整個(gè)過(guò)程在Vue中實(shí)例從創(chuàng)建到銷毀的過(guò)程就是生命周期,即指從創(chuàng)建、初始化數(shù)據(jù)、編譯模板、掛載Dom→渲染、更新→渲染、卸載等一系列過(guò)程我們可以把組件比喻成工廠里面的一條流水線,每個(gè)工人(生命周期)站在各自的崗位,當(dāng)任務(wù)流轉(zhuǎn)到工人身邊的時(shí)候,工人就開始工作PS:在Vue生命周期鉤子會(huì)自動(dòng)綁定 this 上下文到實(shí)例中,因此你可以訪問(wèn)數(shù)據(jù),對(duì) property 和方法進(jìn)行運(yùn)算這意味著你不能使用箭頭函數(shù)來(lái)定義一個(gè)生命周期方法 (例如 created: () => this.fetchTodos())
二、生命周期有哪些
Vue生命周期總共可以分為8個(gè)階段:創(chuàng)建前后, 載入前后,更新前后,銷毀前銷毀后,以及一些特殊場(chǎng)景的生命周期
三、生命周期整體流程
Vue生命周期流程圖
具體分析
beforeCreate -> created
初始化vue實(shí)例,進(jìn)行數(shù)據(jù)觀測(cè)
created
完成數(shù)據(jù)觀測(cè),屬性與方法的運(yùn)算,watch、event事件回調(diào)的配置
可調(diào)用methods中的方法,訪問(wèn)和修改data數(shù)據(jù)觸發(fā)響應(yīng)式渲染dom,可通過(guò)computed和watch完成數(shù)據(jù)計(jì)算
此時(shí)vm.$el 并沒(méi)有被創(chuàng)建
created -> beforeMount
判斷是否存在el選項(xiàng),若不存在則停止編譯,直到調(diào)用vm.$mount(el)才會(huì)繼續(xù)編譯
優(yōu)先級(jí):render > template > outerHTML
vm.el獲取到的是掛載DOM的
beforeMount
在此階段可獲取到vm.el
此階段vm.el雖已完成DOM初始化,但并未掛載在el選項(xiàng)上
beforeMount -> mounted
此階段vm.el完成掛載,vm.$el生成的DOM替換了el選項(xiàng)所對(duì)應(yīng)的DOM
mounted
vm.el已完成DOM的掛載與渲染,此刻打印vm.$el,發(fā)現(xiàn)之前的掛載點(diǎn)及內(nèi)容已被替換成新的DOM
beforeUpdate
更新的數(shù)據(jù)必須是被渲染在模板上的(el、template、render之一)
此時(shí)view層還未更新
若在beforeUpdate中再次修改數(shù)據(jù),不會(huì)再次觸發(fā)更新方法
updated
完成view層的更新
若在updated中再次修改數(shù)據(jù),會(huì)再次觸發(fā)更新方法(beforeUpdate、updated)
beforeDestroy
實(shí)例被銷毀前調(diào)用,此時(shí)實(shí)例屬性與方法仍可訪問(wèn)
destroyed
完全銷毀一個(gè)實(shí)例??汕謇硭c其它實(shí)例的連接,解綁它的全部指令及事件監(jiān)聽(tīng)器
并不能清除DOM,僅僅銷毀實(shí)例
使用場(chǎng)景分析
四、題外話:數(shù)據(jù)請(qǐng)求在created和mouted的區(qū)別文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-653380.html
created是在組件實(shí)例一旦創(chuàng)建完成的時(shí)候立刻調(diào)用,這時(shí)候頁(yè)面dom節(jié)點(diǎn)并未生成;mounted是在頁(yè)面dom節(jié)點(diǎn)渲染完畢之后就立刻執(zhí)行的。觸發(fā)時(shí)機(jī)上created是比mounted要更早的,兩者的相同點(diǎn):都能拿到實(shí)例對(duì)象的屬性和方法。 討論這個(gè)問(wèn)題本質(zhì)就是觸發(fā)的時(shí)機(jī),放在mounted中的請(qǐng)求有可能導(dǎo)致頁(yè)面閃動(dòng)(因?yàn)榇藭r(shí)頁(yè)面dom結(jié)構(gòu)已經(jīng)生成),但如果在頁(yè)面加載前完成請(qǐng)求,則不會(huì)出現(xiàn)此情況。建議對(duì)頁(yè)面內(nèi)容的改動(dòng)放在created生命周期當(dāng)中。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-653380.html
到了這里,關(guān)于vue基礎(chǔ)知識(shí)五:請(qǐng)描述下你對(duì)vue生命周期的理解?在created和mounted這兩個(gè)生命周期中請(qǐng)求數(shù)據(jù)有什么區(qū)別呢?的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!