日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > vue >内容正文

vue

vue 声明周期函数_Vue_生命周期函数

發布時間:2023/12/19 vue 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 vue 声明周期函数_Vue_生命周期函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

創建階段

1.創建一個Vue的實例

new Vue({});

2.Init Events & Lifecycle

表示剛初始化了一個Vue空的實例對象,這時候,這個對象身上只有默認的一些生命周期函數和默認的事件。其它的還沒有創建。

3.beforeCreate

beforeCreate與data、methods等平級,是第一個生命周期函數。表示實例完全被創建出來之前,會執行該函數

var vm=new Vue({

el:"#app",

data:{

msg:'hello'

},

methods:{

show(){

console.log('show()');

}

},

beforeCreate() {

console.log(this.msg);//undefined

this.show(); //TypeError:this.show is not a function

}

})

由上可知,在beforeCreate生命周期執行的時候,data和methods中的數據都還沒有初始化。

4.Init injections & reactivity

初始化data和methods。

5.created

這是第二個生命周期函數

var vm = new Vue({

el: "#app",

data: {

msg: 'hello'

},

methods: {

show() {

console.log('show()');

}

},

created() {

console.log(this.msg);//'hello'

this.show();//'show()'

}

})

如果要調用methods中的方法或者操作data中的數據,最早只能在created中去操作

6.判斷流程圖

表示Vue開始編譯模板,把Vue代碼中的指令進行執行,最終在內存中生成一個編譯好的最終模板字符串。然后把這個模板字符串渲染為內存中的DOM。此時,只是在內存中,渲染好了模板,并沒有把模板掛載到真正的頁面中去

7.beforeMount

這是第三個生命周期函數,表示模板已經在內存中編譯完成,但尚未把模板渲染到頁面中。

{{msg}}

var vm = new Vue({

el: "#app",

data: {

msg: 'hello'

},

methods: {

show() {

console.log('show()');

}

},

beforeMount() {

console.log(document.getElementById("h3").innerText);//{{msg}}

}

})

在beforeMount執行的時候,頁面中的元素,還沒有被真正替換過來,只是之前寫的一些模板字符串。創建vm.$el并替換掉'el'這一步,將內存中編譯好的模板,真實地替換到瀏覽器的頁面中去。

8.mounted

表示內存中的模板,已經真實的掛載到了頁面中,用戶已經可以看到渲染好的頁面了

var vm = new Vue({

el: "#app",

data: {

msg: 'hello'

},

methods: {

show() {

console.log('show()');

}

},

mounted() {

console.log(document.getElementById("h3").innerText);//'hello'

}

})

mounted是實例創建期間的最后一個生命周期函數。當執行完mounted就表示,實例已經完全創建好了,此時若沒有其它操作,這個實例就靜靜地躺在我們的內存中一動不動。此時組件脫離創建階段進入運行階段。

運行階段

1.beforeUpdate

當且僅當data被修改時才觸發這個生命周期函數,但此時僅僅是數據被修改,頁面還未更新。

{{msg}}

var vm = new Vue({

el: "#app",

data: {

msg: 'hello'

},

methods: {

show() {

console.log('show()');

}

},

beforeUpdate() {

console.log('界面上的元素的內容:'+document.getElementById("h3").innerText);//hello

console.log('data中的數據:'+this.msg);//hello world

}

})

2.更新虛擬DOM

根據data中的數據,在內存中重新渲染出一份虛擬DOM,當最新的內存DOM樹被更新之后,會把最新的內存DOM樹,重新渲染到真實的頁面中去,此時完成數據從data(model層)->view(視圖層)的更新

3.updated

Updated() {

console.log('界面上的元素的內容:'+document.getElementById("h3").innerText);//hello world

console.log('data中的數據:'+this.msg);//hello world

}

此時的data數據和頁面已完成同步

銷毀階段

beforeDestory 和 destoryed

當執行beforeDestory鉤子函數的時候,Vue實例就已經從運行階段,進入到了銷毀階段。

當執行beforeDestory的時候,實例身上所有的data和所有的methods,以及過濾器、指令...都處于可用狀態,此時還沒有真正執行銷毀過程。

當執行到destoryed函數的時候,組件已經被全部銷毀了,data與methods均不可用。

總結

以上是生活随笔為你收集整理的vue 声明周期函数_Vue_生命周期函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。