Vue組件和Route的生命周期實(shí)例詳解
先講點(diǎn)實(shí)際的
實(shí)用點(diǎn)的鉤子:
Created:vue實(shí)例被生成后的一個(gè)生命周期鉤子函數(shù)。(頁(yè)面初始化數(shù)據(jù)加載一般寫(xiě)這里);
beforeCreate:給個(gè)loading界面 created撤銷(xiāo)loading;
beforeDestory:你確認(rèn)刪除XX嗎?
destoryed:當(dāng)前組件已被刪除,清空相關(guān)內(nèi)容
關(guān)于Vue組件生命周期,翻譯后圖示:
module.exports = { //props: ['父組建傳的值'], data:function(){ lifecycle.push("data"); return { msg: '各個(gè)階段,可以查看控制臺(tái)輸出,message from my-views', title:'my_views', lifecycle: lifecycle } }, //這里是route的生存周期 route:{ //waitForData: true, // 數(shù)據(jù)加載完畢后再切換試圖,也就是 點(diǎn)擊之后先沒(méi)反應(yīng),然后數(shù)據(jù)加載完,再出發(fā)過(guò)渡效果 canActivate:function(transition){ // canActivate階段,可以做一些用戶(hù)驗(yàn)證的事情(是否可以被激活) // 在驗(yàn)證階段,當(dāng)一個(gè)組件將要被切入的時(shí)候被調(diào)用。 }, activate:function(transition){ // 在激活階段被調(diào)用,在 activate 被斷定( resolved ,指該函數(shù)返回的 promise 被 resolve )。用于加載和設(shè)置當(dāng)前組件的數(shù)據(jù)。(激活) //this.$root.$set('header',this.title); transition.next(); //此方法結(jié)束后,api會(huì)調(diào)用afterActivate 方法 //在aftefActivate中 會(huì)給組件添加 $loadingRouteData 屬性 并設(shè)置為true }, data: function(transition) { var _this = this; // 在激活階段被調(diào)用,在 activate 被斷定( resolved ,指該函數(shù)返回的 promise 被 resolve )。用于加載和設(shè)置當(dāng)前組件的數(shù)據(jù) // 說(shuō)明之前請(qǐng)求過(guò) 則不用再請(qǐng)求了 if(this.$root.myViewsData){ this.$data = this.$root.myViewsData; transition.next(); console.log('已經(jīng)請(qǐng)求過(guò)了不再請(qǐng)求數(shù)據(jù)'); return; } //將數(shù)據(jù)同步到根節(jié)點(diǎn) this.$root.myViewsData = this.$data; setTimeout(function(){ //這里 _this.$loadingRouteData 是 true transition.next({msg:'加載后的數(shù)據(jù)'}); //在調(diào)用完transition.next 后,_this.$loadingRouteData 為 false }.bind(this),4000); }, canDeactivate:function(transition){ // 在驗(yàn)證階段,當(dāng)一個(gè)組件將要被切出的時(shí)候被調(diào)用。(是否可以被禁用) }, deactivate: function (transition) { // 在激活階段,當(dāng)一個(gè)組件將要被禁用和移除之時(shí)被調(diào)用。(禁用) } }, beforeCreate:function(){ // 在實(shí)例初始化之后,數(shù)據(jù)觀測(cè)(data observer) 和 event/watcher 事件配置之前被調(diào)用。 }, created:function(){ // 實(shí)例已經(jīng)創(chuàng)建完成之后被調(diào)用。在這一步,實(shí)例已完成以下的配置:數(shù)據(jù)觀測(cè)(data observer),屬性和方法的運(yùn)算, watch/event 事件回調(diào)。然而,掛載階段還沒(méi)開(kāi)始,$el 屬性目前不可見(jiàn)。 }, beforeCreate:function(){ // 在實(shí)例初始化之后,數(shù)據(jù)觀測(cè)(data observer) 和 event/watcher 事件配置之前被調(diào)用。 }, mounted:function(){ // el 被新創(chuàng)建的 vm.$el 替換,并掛載到實(shí)例上去之后調(diào)用該鉤子。如果 root 實(shí)例掛載了一個(gè)文檔內(nèi)元素,當(dāng) mounted 被調(diào)用時(shí) vm.$el 也在文檔內(nèi)。 }, beforeUpdate: function(){ // 數(shù)據(jù)更新時(shí)調(diào)用,發(fā)生在虛擬 DOM 重新渲染和打補(bǔ)丁之前。 // 你可以在這個(gè)鉤子中進(jìn)一步地更改狀態(tài),這不會(huì)觸發(fā)附加的重渲染過(guò)程。 }, updated: function(){ // 由于數(shù)據(jù)更改導(dǎo)致的虛擬 DOM 重新渲染和打補(bǔ)丁,在這之后會(huì)調(diào)用該鉤子。 //當(dāng)這個(gè)鉤子被調(diào)用時(shí),組件 DOM 已經(jīng)更新,所以你現(xiàn)在可以執(zhí)行依賴(lài)于 DOM 的操作。然而在大多數(shù)情況下,你應(yīng)該避免在此期間更改狀態(tài),因?yàn)檫@可能會(huì)導(dǎo)致更新無(wú)限循環(huán)。 }, // <keep-alive> 包裹動(dòng)態(tài)組件時(shí),會(huì)緩存不活動(dòng)的組件實(shí)例,而不是銷(xiāo)毀它們。 activated: function(){ // keep-alive 組件激活時(shí)調(diào)用。 }, deactivated: function(){ // keep-alive 組件停用時(shí)調(diào)用。 }, beforeDestroy:function(){ // 實(shí)例銷(xiāo)毀之前調(diào)用。在這一步,實(shí)例仍然完全可用。 }, destroyed:function(){ // Vue 實(shí)例銷(xiāo)毀后調(diào)用。調(diào)用后,Vue 實(shí)例指示的所有東西都會(huì)解綁定,所有的事件監(jiān)聽(tīng)器會(huì)被移除,所有的子實(shí)例也會(huì)被銷(xiāo)毀。 } }
總結(jié)
以上所述是小編給大家介紹的Vue組件和Route的生命周期詳解,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
vue修改props數(shù)據(jù)報(bào)錯(cuò)的問(wèn)題及解決
這篇文章主要介紹了vue修改props數(shù)據(jù)報(bào)錯(cuò)的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08vue實(shí)現(xiàn)錄音并轉(zhuǎn)文字功能包括PC端web手機(jī)端web(實(shí)現(xiàn)過(guò)程)
vue實(shí)現(xiàn)錄音并轉(zhuǎn)文字功能,包括PC端,手機(jī)端和企業(yè)微信自建應(yīng)用端,本文通過(guò)實(shí)例代碼介紹vue實(shí)現(xiàn)錄音并轉(zhuǎn)文字功能包括PC端web手機(jī)端web,感興趣的朋友跟隨小編一起看看吧2024-08-08vue自定義移動(dòng)端touch事件之點(diǎn)擊、滑動(dòng)、長(zhǎng)按事件
這篇文章主要介紹了vue自定義移動(dòng)端touch事件之點(diǎn)擊、滑動(dòng)、長(zhǎng)按事件的實(shí)例代碼,需要的朋友可以參考下2018-07-07vue實(shí)現(xiàn)氣泡運(yùn)動(dòng)撞擊效果
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)氣泡運(yùn)動(dòng)撞擊效,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08Vue路由傳遞參數(shù)與重定向的使用方法總結(jié)
路由的本質(zhì)就是一種對(duì)應(yīng)關(guān)系,比如說(shuō)我們?cè)趗rl地址中輸入我們要訪問(wèn)的url地址之后,瀏覽器要去請(qǐng)求這個(gè)url地址對(duì)應(yīng)的資源,下面這篇文章主要給大家介紹了關(guān)于Vue路由傳遞參數(shù)與重定向的使用方法,需要的朋友可以參考下2022-10-10