vue 實(shí)例的生命周期

vue 實(shí)例

var vm = new Vue({
  el:"#app",
  data: {
    a: 1
  },
  created: function () {
    // `this` 指向 vm 實(shí)例
    console.log('a is: ' + this.a)
  }
})
// -> "a is: 1"

vue 生成一個(gè)實(shí)例,實(shí)例里面有很多的屬性,然后把實(shí)例渲染到頁(yè)面上去;

做個(gè)比喻,vue 是一個(gè)家族,世世代代每個(gè)成員(實(shí)例)都要上戰(zhàn)場(chǎng)(渲染到DOM上),家族里出來(lái)的每個(gè)人(實(shí)例),都有自己的參數(shù)

  • 實(shí)例名稱: vm
  • 掛載點(diǎn):el
  • 數(shù)據(jù):data
  • 方法:methods
  • 生命周期:下圖的函數(shù)

生命周期

vue 家族里出來(lái)的每個(gè)人,從出生到上戰(zhàn)場(chǎng),到死亡,它會(huì)經(jīng)歷一系列的過(guò)程,如下圖所示

image.png

一個(gè)人(實(shí)例),在它的一生中,會(huì)有幾個(gè)重要的時(shí)間節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)稱為聲明周期鉤子函數(shù),依次是:

  1. beforeCreate:這個(gè)實(shí)例還沒(méi)有創(chuàng)造出來(lái),無(wú)法獲取datamethods,可以理解為,這個(gè)人還沒(méi)生出來(lái)。
  2. created:這個(gè)實(shí)例被創(chuàng)造出來(lái)了,可以獲取datamethods,可以理解為,這個(gè)人已經(jīng)存在了。
  3. beforeMount:掛載之前,實(shí)例剛剛渲染到 DOM 節(jié)點(diǎn)上,相關(guān)渲染函數(shù)剛執(zhí)行。可以理解為,這個(gè)人到兵營(yíng)去報(bào)了個(gè)到,其他啥都沒(méi)干。
  4. mounted :掛載之后,實(shí)例的初始數(shù)據(jù)data在 DOM 上已經(jīng)渲染完畢,注意:如果是異步的數(shù)據(jù),這時(shí)候還沒(méi)渲染。
  5. beforeUpdate :實(shí)例的data如果發(fā)生變化,beforeUpdate這個(gè)時(shí)候就是指在變化之前。
  6. updated:實(shí)例的data變化完畢,異步數(shù)據(jù)也全部獲取。
  7. beforeDestory:實(shí)例銷毀前。
  8. destoryed:實(shí)例銷毀完畢

updated、watch、$nextTick 異同:

相同點(diǎn),都是數(shù)據(jù)發(fā)生變化后的鉤子函數(shù)
不同:

  • update:所有數(shù)據(jù)的所有變化,如果做同一個(gè)的業(yè)務(wù)邏輯處理,在這里;
  • watch:監(jiān)聽(tīng)具體數(shù)據(jù)的變化,并做相應(yīng)處理。
  • $nextTick: 某個(gè)數(shù)據(jù)的某個(gè)變化,變化后立即更新DOM;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容