淺析Vue中生命周期函數(shù)的區(qū)別
生命周期圖
上圖生命周期每個紅色的鉤子是一個階段,可以在每個不同的階段寫合適的代碼。
生命周期函數(shù)
生命周期分為四個對子,根據(jù)不同的情況使用不同的函數(shù)
其中beforeUpdate、updated能執(zhí)行多次
beforeCreate、created | 創(chuàng)建前、創(chuàng)建后 |
beforeMount、mounted | 掛載前、掛載后 |
beforeUpdate、updated | 更新前、更新后 |
beforeDestroy、destroyed | 銷毀前、銷毀后 |
下面的四種應(yīng)用場景用的統(tǒng)一HTML代碼
<div id="app"> {{myName}} </div>
beforeCreate和created的區(qū)別
創(chuàng)建前、創(chuàng)建后
beforeCreate創(chuàng)建前應(yīng)用場景
vue代碼:
var app = new Vue({ el: '#app', data() { return { myName:'abc', } }, beforeCreate(){ //獲取body并輸出測試 var bodyDom=document.getElementsByTagName("body")[0].innerHTML; console.log("created",this.myName,bodyDom); } });
瀏覽器輸出結(jié)果:
beforeCreate中data的數(shù)據(jù)是沒有被定義的,created后面是undefined并且{{myName}}還未被識別
created創(chuàng)建后應(yīng)用場景
vue代碼:
var app = new Vue({ el: '#app', data() { return { myName:'abc', } }, created(){ //獲取body并輸出測試 var bodyDom=document.getElementsByTagName("body")[0].innerHTML; console.log("created",this.myName,bodyDom); } });
瀏覽器輸出結(jié)果:
created主要做一些頁面的數(shù)據(jù)的數(shù)據(jù)初始化工作,獲取到了myName的值,但是后臺顯示的還是{{myName}}值還未被填上去
beforeMount和mounted的區(qū)別
掛載前、掛載后
beforeMount掛載前應(yīng)用場景
vue代碼:
var app = new Vue({ el: '#app', data() { return { myName:'abc', } }, beforeMount(){ //獲取body并輸出測試 var bodyDom=document.getElementsByTagName("body")[0].innerHTML; console.log("beforeMount",this.myName,bodyDom); }, } });
瀏覽器輸出結(jié)果:
輸出結(jié)果和created創(chuàng)建后一樣,是在創(chuàng)建后掛載前,自我感覺沒啥大用
mounted掛載后應(yīng)用場景
vue代碼:
var app = new Vue({ el: '#app', data() { return { myName:'abc', } }, mounted(){ //獲取body并輸出測試 var bodyDom=document.getElementsByTagName("body")[0].innerHTML; console.log("beforeMount",this.myName,bodyDom); }, } });
瀏覽器輸出結(jié)果:
數(shù)據(jù)已經(jīng)渲染到View中
beforeUpdate和updated的區(qū)別
更新前、更新后;和其他三個不同可被重復(fù)執(zhí)行
beforeUpdate更新前應(yīng)用場景
vue代碼:
var app = new Vue({ el: '#app', data() { return { myName:'abc', } }, beforeUpdate(){ //獲取body并輸出測試 var bodyDom=document.getElementsByTagName("body")[0].innerHTML; console.log("beforeMount",this.myName,bodyDom); }, } });
瀏覽器輸出結(jié)果:
數(shù)據(jù)更新前,數(shù)據(jù)未改變
updated更新后應(yīng)用場景
vue代碼:
var app = new Vue({ el: '#app', data() { return { myName:'abc', } }, updated(){ //獲取body并輸出測試 var bodyDom=document.getElementsByTagName("body")[0].innerHTML; console.log("beforeMount",this.myName,bodyDom); }, } });
瀏覽器輸出結(jié)果:
數(shù)據(jù)更新后,數(shù)據(jù)已改變
beforeDestroy和destroyed的區(qū)別
銷毀前、銷毀后
beforeDestroy銷毀前
一般應(yīng)用到的場景:
- 清除定時器
- 解綁自定義事件
- 取消訂閱、事件監(jiān)聽
沒有具體代碼演示
destroyed銷毀后
此鉤子函數(shù)會在組件實例銷毀之后執(zhí)行,此時所有的組件包括子組件都被銷毀了。
也沒有具體代碼演示
總結(jié)
幾個生命周期函數(shù)各有各的特點,根據(jù)不同的業(yè)務(wù),使用不同的生命周期函數(shù)來解決問題。
到此這篇關(guān)于淺析Vue中生命周期函數(shù)的區(qū)別的文章就介紹到這了,更多相關(guān)Vue生命周期函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue動態(tài)菜單、動態(tài)路由加載以及刷新踩坑實戰(zhàn)
這篇文章主要給大家介紹了關(guān)于vue動態(tài)菜單、動態(tài)路由加載以及刷新踩坑的相關(guān)資料,踩的這些坑其實是挺常見的,大家可以看看,避免遇到的時候再踩到同樣的坑,需要的朋友可以參考下2021-10-10Vue表單數(shù)據(jù)修改與刪除功能實現(xiàn)
本文通過實例代碼介紹了Vue表單數(shù)據(jù)修改與刪除功能實現(xiàn),結(jié)合實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友跟隨小編一起看看吧2023-10-10詳解vue前后臺數(shù)據(jù)交互vue-resource文檔
本篇文章主要介紹了vue前后臺數(shù)據(jù)交互vue-resource文檔,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07vue項目實例中用query傳參如何實現(xiàn)跳轉(zhuǎn)效果
這篇文章主要介紹了vue項目實例中用query傳參如何實現(xiàn)跳轉(zhuǎn)效果,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-10-10