理解VUE生命週期
Vue生命週期
Vue例項需要經過建立、初始化資料、編譯模板、掛載DOM、渲染、更新、渲染、解除安裝等一系列過程,這個過程就是Vue的生命週期,在Vue的整個生命週期中提供很多鉤子函式在生命週期的不同時刻呼叫,Vue中提供的鉤子函式有beforeCreate、created、beforeMount、mounted、beforeUpdate、updated、beforeDestroy、destroyed。
例項程式碼:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>vue生命週期學習</title>
<script src="https://cdn.bootcss.com/vue/2.4.2/vue.js"></script>
</head>
<body>
<div id="app">
<h1>{{message}}</h1>
</div>
</body>
<script>
var vm = new Vue({
el: '#app',
data: {
message: 'Vue的生命週期'
},
beforeCreate: function() {
console.group('------beforeCreate建立前狀態------');
console.log("%c%s", "color:red" , "el : " + this.$el); //undefined
console.log("%c%s", "color:red","data : " + this.$data); //undefined
console.log("%c%s", "color:red","message: " + this.message)
},
created: function() {
console.group('------created建立完畢狀態------');
console.log("%c%s", "color:red","el : " + this.$el); //undefined
console.log("%c%s", "color:red","data : " + this.$data); //已被初始化
console.log("%c%s", "color:red","message: " + this.message); //已被初始化
},
beforeMount: function() {
console.group('------beforeMount掛載前狀態------');
console.log("%c%s", "color:red","el : " + (this.$el)); //已被初始化
console.log(this.$el);
console.log("%c%s", "color:red","data : " + this.$data); //已被初始化
console.log("%c%s", "color:red","message: " + this.message); //已被初始化
},
mounted: function() {
console.group('------mounted 掛載結束狀態------');
console.log("%c%s", "color:red","el : " + this.$el); //已被初始化
console.log(this.$el);
console.log("%c%s", "color:red","data : " + this.$data); //已被初始化
console.log("%c%s", "color:red","message: " + this.message); //已被初始化
},
beforeUpdate: function () {
console.group('beforeUpdate 更新前狀態===============》');
console.log("%c%s", "color:red","el : " + this.$el);
console.log(this.$el);
console.log("%c%s", "color:red","data : " + this.$data);
console.log("%c%s", "color:red","message: " + this.message);
},
updated: function () {
console.group('updated 更新完成狀態===============》');
console.log("%c%s", "color:red","el : " + this.$el);
console.log(this.$el);
console.log("%c%s", "color:red","data : " + this.$data);
console.log("%c%s", "color:red","message: " + this.message);
},
beforeDestroy: function () {
console.group('beforeDestroy 銷燬前狀態===============》');
console.log("%c%s", "color:red","el : " + this.$el);
console.log(this.$el);
console.log("%c%s", "color:red","data : " + this.$data);
console.log("%c%s", "color:red","message: " + this.message);
},
destroyed: function () {
console.group('destroyed 銷燬完成狀態===============》');
console.log("%c%s", "color:red","el : " + this.$el);
console.log(this.$el);
console.log("%c%s", "color:red","data : " + this.$data);
console.log("%c%s", "color:red","message: " + this.message)
}
})
</script>
</html>
vue掛載元件優先順序
vue生命週期過程
- beforeCreate:初始化元件,沒有載入data資料和methods函式,只是載入額外的東西。
- created:載入繫結元件資料、data資料和methods函式,完成事件回撥,計算屬性和methods函式掛載,不過依然沒有載入el元素。
- beforeMount:完成頁面解析,並在記憶體中解析指令和資料,頁面模組存在於記憶體中,沒有渲染DOM。
- mounted:把記憶體中的所有的data資料和methods、el元素,渲染到DOM物件中並在頁面顯示。
- beforeUpdated:資料更新前,所有元素依然存在,並可以訪問。
- updated :渲染資料更改後的資料,並頁面顯示。
- beforeDestory:銷燬資料前,所有的資料依然存在。
- destroyed:銷燬資料,包括所有的元件、物件、監聽事件,全部被銷燬,並無法在頁面顯示。
相關文章
- Vue生命週期的理解Vue
- Vue的生命週期的理解Vue
- 個人對vue中生命週期的理解Vue
- vue - 生命週期Vue
- vue生命週期Vue
- vue 生命週期梳理Vue
- vue的生命週期Vue
- vue 生命週期深入Vue
- vue.js生命週期Vue.js
- vue生命週期詳解Vue
- vue生命週期總結Vue
- 實測Vue生命週期Vue
- vue系列之生命週期Vue
- vue系列生命週期(四)Vue
- Vue父子元件生命週期Vue元件
- Vue 生命週期鉤子Vue
- 學習vue生命週期Vue
- vue生命週期探究(一)Vue
- 詳解vue生命週期Vue
- 淺談vue —— 生命週期Vue
- 圖解vue生命週期圖解Vue
- Vue入門(三)Vue生命週期Vue
- 理解React-元件生命週期React元件
- 理解React元件的生命週期React元件
- Vue原始碼探究-生命週期Vue原始碼
- 詳解Vue生命週期【上】Vue
- Vue例項及生命週期Vue
- vue2的生命週期Vue
- vue例項以及生命週期Vue
- vue生命週期整理學習Vue
- vue3 生命週期06Vue
- vue - 生命週期第二次學習與理解Vue
- vue所有生命週期函式/鉤子函式理解Vue函式
- 新手對React生命週期的理解React
- (譯)理解Rust中的生命週期Rust
- 10分鐘理解React生命週期React
- Activity生命週期深入理解2
- 詳解 Vue 生命週期實現Vue