這篇文章主要為大家展示了“Vue生命周期的相關知識點有哪些”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Vue生命周期的相關知識點有哪些”這篇文章吧。
別名:生命周期回調函數、生命周期函數、生命周期鉤子。
生命周期是什么?Vue在關鍵時刻幫我們調用的一些特殊名稱的函數。
生命周期函數的名字不可更改,但函數內部的具體內容由程序員自行編寫
生命周期函數中的this指向也是vm 或 組件實例對象。
1.初始化
1.beforeCreate()
2.created()
2.掛載(頁面渲染)
1.beforeMount()
2.mounted()
3.更新
1.beforeUpdate()
2.updated()
4.銷毀
1.beforeDestory()
2.destoryed()

beforeCreate():可以配置全局事件總線,后面會講到先提一嘴
mounted(): 可以在此階段發送ajax請求, 啟動定時器、綁定自定義事件、訂閱消息等異步任務【初始化操作】
beforeDestroy(): 在此階段做收尾工作, 如: 清除定時器、解綁自定義事件、取消訂閱消息等【首尾工作】
銷毀后借助Vue開發者工具看不到任何信息
銷毀后自定義事件會失效,但原生DOM事件依然有效
一般不會在beforeDestroy操作數據,因為即使操作數據,也不會再觸發更新流程了。
1.加載渲染的過程
父beforeCreate ==> 父created ==> 父beforeMount ==> 子beforeCreate ==> 子created ==> 子beforeMount ==> 子mounted ==> 父mounted
2.更新的過程
父beforeUpdate ==> 子beforeUpdate ==> 子updated ==> 父updated
3.銷毀過程
父beforeDestroy ==> 子beforeDestroy ==> 子destroyed ==> 父destroyed
<div id="root">
<!-- 讓h4透明度產生過渡的效果 -->
<h4 :>歡迎學習Vue!</h4>
<button @click="des">點擊我銷毀</button>
</div>
<script>
Vue.config.productionTip = false
let vm = new Vue({
el: '#root',
data: {
opacity: 1
},
methods: {
des(){
// 觸發此函數必定調用,beforeDestroy(),destroyed()
this.$destroy()
}
},
mounted() { //掛載
/*
- 完成模板解析后并且將初始的真實的DOM元素掛載到頁面后,才執行的函數
只會執行一次
- this指向Vue
- 開發中常用的方法,當我們想要讀取某個屬性但是讀不到,就可以
將該屬性綁定到共同能夠訪問到的元素上,例如下面定時器的例子
*/
this.timer = setInterval(() => {
this.opacity -= 0.01
if (this.opacity <= 0)
this.opacity = 1
}, 10);
},
beforeDestroy() {
console.log("beforeDestroy - 清除定時器");
clearInterval(this.timer)
},
destroyed() {
console.log("destroyed - 銷毀完畢")
},
})
</script> <div id="root">
<h4>n的值為:{{n}}</h4>
<button @click="add">點擊我n+1</button>
<button @click="remove">點擊銷毀vm</button>
</div>
<script>
Vue.config.productionTip = false
let vm = new Vue({
el: '#root',
data: {
n:1
},
methods: {
add(){
this.n++
},
remove(){
this.$destroy()
}
},
beforeCreate() {
/*
此時初始化生命周期,事件等,數據代理還未開始
vm無法訪問到data中的數據,methods中的方法
*/
console.log("beforeCreate");
//console.log(this.n); //undefined
// console.log(this.add()); // this.add is not a function
// debugger
},
created() {
/*
已經完成了初始化的數據監視和數據代理
vm可以訪問到data中的數據和methods的方法
*/
console.log("created");
// console.log(this.n); // 1
// console.log(this.add()); // undefined
// debugger
},
beforeMount() {
/*
掛載之前,也就是圖中的判斷框里執行的,此階段是Vue
在解析模板并且生成虛擬DOM存儲在內存當中,頁面還不能
看到解析后的樣子
*/
console.log("beforeMount");
// debugger
},
mounted() {
/*
完成模板解析后并且將初始的真實的DOM元素掛載到頁面后,才執行的函數
一般在此:開啟一些定時器、發送網絡請求、訂閱消息、
綁定自定義事件等等初始化
*/
console.log("mounted");
// debugger
},
beforeUpdate() {
/*
當數據發生更新后,此時數據已經更新完成,但是頁面
還是未更新的。
也就是面試所問的:頁面和尚未和數據保持同步的階段
*/
console.log("beforeUpdate");
},
updated() {
/*
在這之前會進行新舊虛擬DOM比較,最終完成頁面的更新
此階段就是頁面和數據保持同步
*/
console.log("updated");
},
beforeDestroy() {
/*
當我們調用vm.$destroy時,才會執行下面兩個函數,
馬上要執行銷毀階段,一般在這個階段做一些收尾操作
比如:關掉定時器,取消訂閱,解綁自定義事件
*/
console.log("beforeDestroy");
},
destroyed() {
/*
所有的指令,所有的自定義事件監聽器都沒了(只留下原生的dom的事件)
*/
console.log("destroyed");
},
})
</script>以上是“Vue生命周期的相關知識點有哪些”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。