1、整理的Vue生命週期中文圖
2、我的理解的Vue生命週期
1.看中文簡介版本須要對照下面給的代碼,根據註解和代碼去對應
2.首先要知道,綁定渲染的dom不止有el中綁定形式,還有實例對象調用$mount
3.綁定後會接着往下找看有沒有template 設置,有和沒有會執行兩種,也就是說
有template 就只會渲染template中的內容,而且覆蓋掉el中的內容
4.可是即便向第三條那樣使用template,el會被覆蓋,也必須寫el,可是能夠不用
再裏面寫操做,緣由是聲明週期先找el,在根據渲染el 和template在選擇
5.template 只能有一個根元素,想多個就給有if 或者show 弄成單個顯示
6.beforeCreate、created、beforeMount、mounted 他們四個是建立生命週期一
條龍,後續當咱們去改變數據,這些聲明週期都不會在執行,除非刷新頁面從新
讓生命週期繼續;
7.而改變值讓頁面跟着一塊兒變化的是beforeUpdate 、updated他倆在虛擬dom
中,改變就觸發,但最好不用,由於有watch 和計算屬性均可以作到,因此這個
生命週期中通常不作操做
8.這裏要最重要的說明beforeUpdate 、updated第一次刷新頁面的生命週期不執
行。只有數據更新虛擬dom監聽到才執行
3、對照理解代碼
1.打上斷點更方便理解
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.22/dist/vue.js"></script>
</head>
<body>
<div id="app">
<button @click="dom">增長dom</button>
<p v-for="i,index in list" ref="plist">{{i}}</p>
<p ref="pHtml">我好</p>
<!--<template id="ss">-->
<!--template 渲染區域-->
<!--</template>-->
</div>
<script>
// 建立 Vue 實例,獲得 ViewModel
// vm.$mount('#app') 不經常使用,通常用el
var vm = new Vue({
el: '#app',
// template:'#ss', template 渲染
data: {
list: ['as', 'bs', 'cs'],
},
methods:{
dom(){
this.list.push('ds');
},
},
beforeCreate(){
debugger;
},
created(){
debugger;
},
beforeMount(){
debugger;
},
mounted(){
debugger;
},
beforeUpdate(){
debugger;
},
updated(){
debugger;
},
beforeDestroy(){
debugger;
},
destroyed(){
debugger;
}
});
</script>
</body>
</html>