vue中的生命周期及鉤子函數(shù)
1.什么是生命周期
Vue 實(shí)例有一個(gè)完整的生命周期,也就是從開(kāi)始創(chuàng)建、初始化數(shù)據(jù)、編譯模板、掛載 Dom
、渲染 → 更新 → 渲染、卸載等一系列過(guò)程,我們稱這是 Vue 的生命周期。通俗說(shuō)就是 Vue 實(shí)例從創(chuàng)建到銷毀的過(guò)程,就是生命周期。
在 Vue 的整個(gè)生命周期中,它提供了一系列的事件,可以讓我們?cè)谑录|發(fā)時(shí)注冊(cè) js
方法,可以讓我們用自己注冊(cè)的 js 方法控制整個(gè)大局,在這些事件響應(yīng)方法中的 this
直接指向的是 vue
的實(shí)例。
2.vue 的生命周期
生命周期函數(shù),又叫鉤子函數(shù)(生命周期鉤子===生命周期函數(shù)===生命周期事件)
vue 中的生命周期函數(shù),一般都是 成對(duì)出現(xiàn)。所以我們成對(duì)比較一下,他們的區(qū)別。
10 個(gè)生命周期函數(shù) 牢記!具體使用!
3.生命周期鉤子函數(shù)
特點(diǎn):自動(dòng)調(diào)用的,只是他們的調(diào)用的時(shí)間節(jié)點(diǎn) 有 先 有 后。
在官網(wǎng)上拿了張圖:
beforeCreate --- vue實(shí)例"創(chuàng)建前" ,注意:在這個(gè)函數(shù)中,vue中data數(shù)據(jù)中心的數(shù)據(jù),它是讀不到的。
<script src="./js/vue.js"></script> <script> let vm = new Vue({ el:'#app', data:{ name:"哈哈哈", num:1111 }, methods: { }, // vue實(shí)例創(chuàng)建之前 beforeCreate(){ console.log('beforeCreate'); console.log(this.name); } </script>
輸出數(shù)據(jù)中心的 name 是讀不到的:
created --- vue實(shí)例"創(chuàng)建后",注意:在這個(gè)函數(shù)中,可以識(shí)別 到 vue中data數(shù)據(jù)中心的數(shù)據(jù) <script src="./js/vue.js"></script> <script> let vm = new Vue({ el:'#app', data:{ name:"哈哈哈", num:1111 }, // vue實(shí)例創(chuàng)建之后 created(){ console.log("created"); console.log(this.name); } }) </script>
查看結(jié)果:
beforeMount --- DOM
掛載之前 this.$el---此時(shí)的$el為“虛擬的”DOM節(jié)點(diǎn)
在視圖層渲染標(biāo)簽:
<div id="app"> <p>{{name}}</p> <p>{{num}}</p> </div> <script src="./js/vue.js"></script> <script> let vm = new Vue({ el:'#app', data:{ name:"哈哈哈", num:1111 }, // dom掛載之前 beforeMount(){ console.log("beforeMount"); //查看dom元素 console.log(document.body.querySelector("#app").innerHTML); } }) </script>
dom掛載前輸出結(jié)果:
mounted ---DOM掛載之后 this.$el---此時(shí)的$el為“真實(shí)的”DOM節(jié)點(diǎn) <script src="./js/vue.js"></script> <script> let vm = new Vue({ el:'#app', data:{ name:"哈哈哈", num:1111 }, // dom掛載之后 mounted(){ console.log("mounted"); console.log(document.body.querySelector("#app").innerHTML); } }) </script>
查看輸出結(jié)果:
beforeUpdate
--- 數(shù)據(jù)更新之前(----視圖層中的數(shù)據(jù)的前后變化)updated
--- 數(shù)據(jù)更新之后(----視圖層中的數(shù)據(jù)的前后變化)
在視圖層通過(guò) 點(diǎn)擊讓 num 的數(shù)值發(fā)生改變來(lái)模擬數(shù)據(jù)更新,查看結(jié)果:
<div id="app"> <p id="num">{{num}}</p> <button @click="num++">點(diǎn)擊數(shù)據(jù)更新(num+1)</button> </div> // 數(shù)據(jù)更新前 beforeUpdate(){ console.log("beforeUpdate--數(shù)據(jù)更新前"); // 查看dom元素 console.log(document.body.querySelector("#num").innerHTML); }, // 數(shù)據(jù)更新后 updated(){ console.log("updated--數(shù)據(jù)更新后"); // 查看dom元素 console.log(document.body.querySelector("#num").innerHTML); }
此時(shí)數(shù)據(jù)無(wú)變化時(shí),在控制臺(tái)是看不到效果的,當(dāng)我們點(diǎn)擊按鈕后:
到此這篇關(guān)于vue中的生命周期及鉤子函數(shù)的文章就介紹到這了,更多相關(guān)vue中的生命周期鉤子函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue基礎(chǔ)之v-bind屬性、class和style用法分析
這篇文章主要介紹了vue基礎(chǔ)之v-bind屬性、class和style用法,結(jié)合實(shí)例形式分析了vue.js中v-bind綁定及class、style樣式控制相關(guān)操作技巧,需要的朋友可以參考下2019-03-03Vue實(shí)現(xiàn)大屏頁(yè)面的屏幕自適應(yīng)
這篇文章主要為大家詳細(xì)介紹了Vue實(shí)現(xiàn)大屏頁(yè)面的屏幕自適應(yīng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10Vue指令之 v-cloak、v-text、v-html實(shí)例詳解
當(dāng)用戶頻繁刷新頁(yè)面或網(wǎng)速慢時(shí),頁(yè)面未完成 Vue.js 的加載時(shí),導(dǎo)致 Vue 來(lái)不及渲染,這就會(huì)導(dǎo)致在瀏覽器中直接暴露插值(表達(dá)式),這篇文章主要介紹了Vue指令 v-cloak、v-text、v-html,需要的朋友可以參考下2019-08-08vue組件Prop傳遞數(shù)據(jù)的實(shí)現(xiàn)示例
本篇文章主要介紹了vue組件Prop傳遞數(shù)據(jù)的實(shí)現(xiàn)示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-08-08vue后臺(tái)返回格式為二進(jìn)制流進(jìn)行文件的下載方式
這篇文章主要介紹了vue后臺(tái)返回格式為二進(jìn)制流進(jìn)行文件的下載方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06