vue生命周期


以下主要從幾個方面來講:

1.vue的生命周期是什么
2.vue生命周期的在項目中的執行順序
3.vue中內置的方法 屬性和vue生命周期的運行順序(methodscomputeddatawatch
4.自己構造的方法與vue生命周期的運行順序 如show這些
5.總結

一、vue的生命周期是什么

vue每個組件都是獨立的,每個組件都有一個屬於它的生命周期,從一個組件創建、數據初始化、掛載、更新、銷毀,這就是一個組件所謂的生命周期。在組件中具體的方法有: beforeCreate  created beforeMount mountedbeforeUpdate  updated  activated deactivated beforeDestroy  destroyed
對應的中文就如其字面意思,英文不好的童鞋可以有道翻翻 好了,這里要上圖啦~~~

  

二、vue生命周期的在項目中的執行順序

1 export default {
2   data () {
3     return {
4       rendered: false
5     }
6   }
7 }

 

1 export default {
2   beforeCeate(){
3     console.log(this.rendered);  // undefined 
4   }
5 }
 
         
1 export default {
2   created() {
3     console.log(this.$el);//undefined
4     console.log(this.rendered);  // false
5   }
6 }

 

1 export default {
2   beforeMount() {
3     console.log(this.$el);//undefined
4   }
5 }

 

1 export default {
2   mounted() {
3     console.log(this.$el);  
4   }
5 }

 

1 export default {
2   beforeDestroty(){
3     console.log(this.$el);
4     console.log(this.rendered); 
5   }
6 }

 

1 export default {
2   destroyed() {
3     console.log(this.$el);
4     console.log(this.rendered);
5   }
6 }

 

三、vue中內置的方法 屬性和vue生命周期的運行順序(methodscomputeddatawatchprops)

從第一二點可知道data的初始化是在created時已經完成數據觀測data observer,並且諸如methodscomputed屬性props等已經初始化;那問題來了,data props computed watch methods他們之間的生成順序是什么呢? 根據翻看vue源碼可知:

 

props -> methods -> data ->  computed ->  watch; 懂了沒

 

四、自己構造的方法與vue生命周期的運行順序 如show這些

往往我們在開發項目時都經常用到$refs 來直接訪問子組件的方法,但是這樣調用的時候可能會導致數據的延遲滯后的問題,則會出現bug。 解決方法則是推薦采取異步回調的方法,然后傳參進去,嚴格遵守vue的生命周期就可以解決 推薦 es6 的promise。 示例代碼:

 1 export default {
 2   methods: {
 3       handleAsync () {
 4           return new Promise(resolve=>{
 5               const res="somedata";
 6               resolve(res)
 7           })
 8        },
 9        async handleShow() {
10               await this.handleAsync().then(res=>{
11               this.$refs.child.show(res);
12            })
13         }
14    }
15 }

 

五、總結

vue 的生命周期,總得來說就是實例的創建和銷毀這段時間的一個機制吧。也是vue框架的數據間的交互通信。其實現在看來也沒那么難,但是vue的源碼實現這一套機制那是難得一逼,涉及到復雜的算法如diff算法,有興趣的童鞋可以去深入了解一下。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM