Vue組件和Route的生命周期實例詳解
先講點實際的
實用點的鉤子:
Created:vue實例被生成后的一個生命周期鉤子函數(shù)。(頁面初始化數(shù)據(jù)加載一般寫這里);
beforeCreate:給個loading界面 created撤銷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: '各個階段,可以查看控制臺輸出,message from my-views',
title:'my_views',
lifecycle: lifecycle
}
},
//這里是route的生存周期
route:{
//waitForData: true, // 數(shù)據(jù)加載完畢后再切換試圖,也就是 點擊之后先沒反應(yīng),然后數(shù)據(jù)加載完,再出發(fā)過渡效果
canActivate:function(transition){
// canActivate階段,可以做一些用戶驗證的事情(是否可以被激活)
// 在驗證階段,當(dāng)一個組件將要被切入的時候被調(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會調(diào)用afterActivate 方法
//在aftefActivate中 會給組件添加 $loadingRouteData 屬性 并設(shè)置為true
},
data: function(transition) {
var _this = this;
// 在激活階段被調(diào)用,在 activate 被斷定( resolved ,指該函數(shù)返回的 promise 被 resolve )。用于加載和設(shè)置當(dāng)前組件的數(shù)據(jù)
// 說明之前請求過 則不用再請求了
if(this.$root.myViewsData){
this.$data = this.$root.myViewsData;
transition.next();
console.log('已經(jīng)請求過了不再請求數(shù)據(jù)');
return;
}
//將數(shù)據(jù)同步到根節(jié)點
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){
// 在驗證階段,當(dāng)一個組件將要被切出的時候被調(diào)用。(是否可以被禁用)
},
deactivate: function (transition) {
// 在激活階段,當(dāng)一個組件將要被禁用和移除之時被調(diào)用。(禁用)
}
},
beforeCreate:function(){
// 在實例初始化之后,數(shù)據(jù)觀測(data observer) 和 event/watcher 事件配置之前被調(diào)用。
},
created:function(){
// 實例已經(jīng)創(chuàng)建完成之后被調(diào)用。在這一步,實例已完成以下的配置:數(shù)據(jù)觀測(data observer),屬性和方法的運算, watch/event 事件回調(diào)。然而,掛載階段還沒開始,$el 屬性目前不可見。
},
beforeCreate:function(){
// 在實例初始化之后,數(shù)據(jù)觀測(data observer) 和 event/watcher 事件配置之前被調(diào)用。
},
mounted:function(){
// el 被新創(chuàng)建的 vm.$el 替換,并掛載到實例上去之后調(diào)用該鉤子。如果 root 實例掛載了一個文檔內(nèi)元素,當(dāng) mounted 被調(diào)用時 vm.$el 也在文檔內(nèi)。
},
beforeUpdate: function(){
// 數(shù)據(jù)更新時調(diào)用,發(fā)生在虛擬 DOM 重新渲染和打補丁之前。
// 你可以在這個鉤子中進(jìn)一步地更改狀態(tài),這不會觸發(fā)附加的重渲染過程。
},
updated: function(){
// 由于數(shù)據(jù)更改導(dǎo)致的虛擬 DOM 重新渲染和打補丁,在這之后會調(diào)用該鉤子。
//當(dāng)這個鉤子被調(diào)用時,組件 DOM 已經(jīng)更新,所以你現(xiàn)在可以執(zhí)行依賴于 DOM 的操作。然而在大多數(shù)情況下,你應(yīng)該避免在此期間更改狀態(tài),因為這可能會導(dǎo)致更新無限循環(huán)。
},
// <keep-alive> 包裹動態(tài)組件時,會緩存不活動的組件實例,而不是銷毀它們。
activated: function(){
// keep-alive 組件激活時調(diào)用。
},
deactivated: function(){
// keep-alive 組件停用時調(diào)用。
},
beforeDestroy:function(){
// 實例銷毀之前調(diào)用。在這一步,實例仍然完全可用。
},
destroyed:function(){
// Vue 實例銷毀后調(diào)用。調(diào)用后,Vue 實例指示的所有東西都會解綁定,所有的事件監(jiān)聽器會被移除,所有的子實例也會被銷毀。
}
}
總結(jié)
以上所述是小編給大家介紹的Vue組件和Route的生命周期詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
vuex結(jié)合session存儲數(shù)據(jù)解決頁面刷新數(shù)據(jù)丟失問題
在項目中表單篩選項里,選擇完之后刷新頁面數(shù)據(jù)就變了,沒有保留在自己選擇的選項上。本文使用session存儲數(shù)據(jù),具有一定的參考價值,感興趣的可以了解一下2021-09-09
VUE實現(xiàn)一個Flappy Bird游戲的示例代碼
這篇文章主要介紹了VUE實現(xiàn)一個Flappy Bird的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
vue3+vite加載本地js/json文件不能使用require淺析
這篇文章主要給大家介紹了關(guān)于vue3+vite加載本地js/json文件不能使用require的相關(guān)資料,require 是屬于 Webpack 的方法,在v3+vite的項目里面并不適用,需要的朋友可以參考下2023-07-07
vue?禁止重復(fù)點擊發(fā)送多次請求的實現(xiàn)
本文主要介紹了vue?禁止重復(fù)點擊發(fā)送多次請求的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03
關(guān)于vue中對window.openner的使用指南
opener屬性是一個可讀可寫的屬性,可返回對創(chuàng)建該窗口的Window對象的引用,下面這篇文章主要給大家介紹了關(guān)于vue中對window.openner使用的相關(guān)資料,需要的朋友可以參考下2022-11-11
Vue中使用this.$set()如何新增數(shù)據(jù),更新視圖
這篇文章主要介紹了Vue中使用this.$set()實現(xiàn)新增數(shù)據(jù),更新視圖方式。具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-06-06

