vue生命周器與實例

圖片中文字過小,請用放大鏡查看

vue實例

vue生命週期函數

函數名稱 階段 說明
beforeCreate 創建階段:創建之前  在beforeCreate執行的時候 data和methods中的數據尚未被初始化
created 創建階段:創建 在created執行的時候 data和methods已經被初始化好了。如果要調用methods中的方法,或者操作data中的數據 最早只能在created中操作
beforeMount 創建階段:掛載之前 beforeMount執行的時候 模板已經在內存中編譯好了但是尚未掛載到頁面中去 此時頁面還是舊的
mounted 創建階段:掛載 mounted時實例創建期間最後一個生命週期函數,當執行完mounted就表示,實例已經被完全創建好了,此時,如果沒有其他草錯的話,這個實例就靜靜的躺在內存中,一動不動
beforeUpdate 運行階段:數據更新之前 當執行beforUpdate的時候 頁面中顯示的數據還是舊的 此時data中的數據是最新的  此時頁面尚未和最新的數據同步
updated 運行階段:數據更新之後 當update執行的時候 頁面和data中的數據已經同步,都是最新的數據
beforeDestroy 銷燬階段:銷燬之前 當執行beforeDestroy的時候,vue實例身上的數據尚未被銷燬
destroyed 銷燬階段:銷燬之後 當執行destroyed的視乎,vue實例身上的數據被完全銷燬

 

測試 

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<div id="app">
			<input type="button" value="修改msg" @click="msg='no'">
			<h3 id="h3">{{msg}}</h3>
		</div>
		<script src="js/vue.js"></script>
		<script>
			const vm = new Vue({
				el : '#app',
				data : {
					msg : 'ok'
				},
				methods : {
					show () {
						console.log('執行了show方法!!')
					}
				},
				beforeCreate () { //第一個生命週期函數 表示實例被完全創建出來之前會執行它
					//console.log(this.msg) //返回undefined 找不到msg 表示 data沒有被加載
					//console.log(this.show()) //找不到此方法  表示methods 尚未加載
					// 結論: 在beforeCreate執行的時候 data和methods中的數據尚未被初始化
				},
				created () { // 第二個生命週期函數
					//console.log(this.msg);//返回ok 表示可以data中的數據已經被加載
					//this.show(); //返回  執行了show方法!! 表示methods中的數據已經被加載
					// 結論: 在created執行的時候 data和methods已經被初始化好了
					//如果要調用methods中的方法,或者操作data中的數據 最早只能在created中操作
				},
				beforeMount (){ // 第三個生命週期行數 表示模板已經在內存中完成了 但是並沒有渲染到真正的頁面中去
					//console.log(document.getElementById('h3').innerText);//返回{{msg}} 表示尚未渲染到頁面上去
					//beforeMount執行的時候 模板已經在內存中編譯好了但是尚未掛載到頁面中去 此時頁面還是舊的
					
				},
				mounted () { //第四個生命週期函數  表示內存中的模板,已經真是的掛載到了頁面中 用戶已經可以看到渲染好的頁面了
					//console.log(document.getElementById('h3').innerText); 返回ok 表示可以得到頁面中的內容
					//結論: mounted時實例創建期間最後一個生命週期函數,當執行完mounted就表示,實例已經被完全創建好了,此時,如果沒有其他草錯的話,這個實例就靜靜的躺在內存中,一動不動
				},
				//運行中的兩個事件
				beforeUpdate () { //表示頁面中的數據還沒有被更行   數據被更新了
					//console.log("頁面中的數據是:"+document.getElementById('h3').innerText); 返回ok 
					//console.log("data中msg的數據是:"+this.msg); 返回no
					//結論: 當執行beforUpdate的時候 頁面中顯示的數據還是舊的 此時data中的數據是最新的  此時頁面尚未和最新的數據同步
				},
				updated (){  //表示頁面中的數據和data中的數據保持同步
					//console.log("頁面中的數據是:"+document.getElementById('h3').innerText);   返回no
					//console.log("data中msg的數據是:"+this.msg); 返回no
					//結論:當update執行的時候 頁面和data中的數據已經同步,都是最新的數據
				}
			})
		</script>
	</body>
</html>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章