Vue 選項(xiàng) / 生命周期

Vue的生命周期函數(shù)是指在Vue實(shí)例由創(chuàng)建最初到完整的運(yùn)行一次這個(gè)過(guò)程中會(huì)觸發(fā)的函數(shù)
可以理解為每一個(gè)Vue的實(shí)例在被創(chuàng)建出來(lái)的時(shí)候都需要有一個(gè)過(guò)程市框,例如我們要編譯模板濒持,要將實(shí)例掛載到某個(gè)元素上等,而在這一系列的執(zhí)行過(guò)程中就會(huì)觸發(fā)Vue自身設(shè)定的一些函數(shù)寄狼,而根據(jù)這些函數(shù)執(zhí)行的時(shí)期的不同我們可以針對(duì)性的在不同函數(shù)執(zhí)行時(shí)做一些操作
所有的生命周期鉤子會(huì)自動(dòng)綁定this上下文到實(shí)例中丁寄,因此我們可以在生命周期鉤子中訪問(wèn)實(shí)例數(shù)據(jù),對(duì)屬性和方法進(jìn)行運(yùn)算泊愧,切記不可以使用箭頭函數(shù)來(lái)定義一個(gè)生命周期方法伊磺,因?yàn)榧^函數(shù)會(huì)自動(dòng)綁定上下文的關(guān)系,此時(shí)的this綁定不會(huì)是Vue實(shí)例

lifecycle.png
beforeCreate

在實(shí)例初始化之后删咱,在這個(gè)階段Vue重寫data/computed中的getter/setter方法屑埋,數(shù)據(jù)和方法沒有被配置之前被調(diào)用

created

在實(shí)例已經(jīng)創(chuàng)建完成之后被調(diào)用,在這一步腋腮,實(shí)例已經(jīng)完成以下的配置:數(shù)據(jù)雀彼,屬性和方法的運(yùn)算,watch/event事件回調(diào)即寡,但是掛載階段還沒開始徊哑,$el屬性目前不可見
在這個(gè)階段,我們可以獲取實(shí)例中的數(shù)據(jù)和方法聪富,并對(duì)DOM中的每個(gè)節(jié)點(diǎn)進(jìn)行處理莺丑,匹配{{ }}插值和v-model、v-bind等節(jié)點(diǎn)屬性,將插值與data綁定

針對(duì)檢測(cè)到的不同屬性梢莽,比如在input中檢測(cè)到v-model萧豆,那么會(huì)給input元素添加input事件監(jiān)聽
檢測(cè)到v-bind,會(huì)發(fā)布一個(gè)訂閱消息給watcher昏名,最終綁定到data上
檢測(cè)到v-for涮雷,會(huì)添加遍歷方法等

最后會(huì)把檢測(cè)到的Vue自定義的節(jié)點(diǎn)屬性都移除

beforeMount

在掛載開始之前被調(diào)用,相關(guān)的render函數(shù)首次被調(diào)用轻局,在這個(gè)時(shí)候還不能訪問(wèn)DOM節(jié)點(diǎn)洪鸭,此時(shí)我們的$el為虛擬的dom節(jié)點(diǎn),在節(jié)點(diǎn)中的數(shù)據(jù)依然是{{data}}的形式

mounted

el被新創(chuàng)建的vm.$el替換仑扑,并掛載到實(shí)例上去之后調(diào)用該函數(shù)览爵,在這個(gè)時(shí)候可以訪問(wèn)DOM節(jié)點(diǎn)了,節(jié)點(diǎn)中的數(shù)據(jù)渲染完成

beforeUpdate

數(shù)據(jù)更新時(shí)調(diào)用镇饮,發(fā)生在虛擬DOM重新渲染和補(bǔ)丁之前蜓竹,我們可以在這個(gè)鉤子中進(jìn)一步更改狀態(tài),這不會(huì)觸發(fā)附加的重渲染過(guò)程

頁(yè)面上的數(shù)據(jù)储藐,比如input/select等數(shù)據(jù)有變動(dòng)俱济,會(huì)觸發(fā)這個(gè)元素上被綁定的監(jiān)聽事件,將這個(gè)讀取的請(qǐng)求發(fā)布給watcher,wetcher在觸發(fā)data/computed中的setter邑茄,從而改變Vue實(shí)例上的屬性值

updated

由于數(shù)據(jù)更改導(dǎo)致的虛擬的DOM重新渲染和打補(bǔ)丁姨蝴,在這之后會(huì)調(diào)用該鉤子俊啼,當(dāng)這個(gè)鉤子被調(diào)用時(shí)肺缕,組件DOM已經(jīng)更新,所以在該函數(shù)內(nèi)部可以執(zhí)行依賴于DOM的操作

節(jié)點(diǎn)元素渲染完畢/屬性值修改完畢

activated

keep-alive組件激活時(shí)調(diào)用

deactivated

keep-alive組件停用時(shí)調(diào)用

beforeDestroy

實(shí)例銷毀之前調(diào)用授帕,在這一步時(shí)同木,我們?nèi)匀豢梢允褂脤?shí)例

destroyed

vue實(shí)例銷毀后調(diào)用,調(diào)用后跛十,vue實(shí)例的所有東西都會(huì)解綁定彤路,所有的事件監(jiān)聽器會(huì)被移除,所有的子實(shí)例也會(huì)被銷毀

<body>
<div id="box">
  {{msg}}
  <button @click="destroy">destroy</button>
</div>
<script>
  new Vue({
    data: {
      msg: "vue實(shí)例"
    },
    methods: {
      destroy() {
        this.$destroy() //shoudongjava
      }
    },
    beforeCreate() {
      console.log("%c%s", "color:red", "實(shí)例初始化");
      console.log(this.$data, "實(shí)例數(shù)據(jù)");
      console.log(this.destroy, "實(shí)例方法");
      console.log(this.$el, "實(shí)例掛載");
      debugger;
    },
    created() {
      console.log("%c%s", "color:red", "實(shí)例創(chuàng)建完成");
      console.log(this.$data, "實(shí)例數(shù)據(jù)");
      console.log(this.destroy, "實(shí)例方法");
      console.log(this.$el, "實(shí)例掛載");
      debugger;
    },
    beforeMount() {
      console.log("%c%s", "color:red", "實(shí)例掛載之前");
      console.log(this.$data, "實(shí)例數(shù)據(jù)");
      console.log(this.destroy, "實(shí)例方法");
      console.log(this.$el, "實(shí)例掛載");
      debugger;
    },
    mounted() {
      console.log("%c%s", "color:red", "實(shí)例掛載完成");
      console.log(this.$data, "實(shí)例數(shù)據(jù)");
      console.log(this.destroy, "實(shí)例方法");
      console.log(this.$el, "實(shí)例掛載");
      debugger;
    },
    beforeDestroy() {
      console.log("%c%s", "color:red", "實(shí)例銷毀之前");
      console.log(this.$data, "實(shí)例數(shù)據(jù)");
      console.log(this.destroy, "實(shí)例方法");
      console.log(this.$el, "實(shí)例掛載");
    },
    destroyed() {
      console.log("%c%s", "color:red", "實(shí)例銷毀之后");
      console.log(this.$data, "實(shí)例數(shù)據(jù)");
      console.log(this.destroy, "實(shí)例方法");
      console.log(this.$el, "實(shí)例掛載");
    }
  }).$mount("#box")
</script>
</body>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末芥映,一起剝皮案震驚了整個(gè)濱河市洲尊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌奈偏,老刑警劉巖坞嘀,帶你破解...
    沈念sama閱讀 222,865評(píng)論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異惊来,居然都是意外死亡丽涩,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,296評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)矢渊,“玉大人继准,你說(shuō)我怎么就攤上這事“校” “怎么了移必?”我有些...
    開封第一講書人閱讀 169,631評(píng)論 0 364
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)毡鉴。 經(jīng)常有香客問(wèn)我避凝,道長(zhǎng),這世上最難降的妖魔是什么眨补? 我笑而不...
    開封第一講書人閱讀 60,199評(píng)論 1 300
  • 正文 為了忘掉前任管削,我火速辦了婚禮,結(jié)果婚禮上撑螺,老公的妹妹穿的比我還像新娘含思。我一直安慰自己,他們只是感情好甘晤,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,196評(píng)論 6 398
  • 文/花漫 我一把揭開白布含潘。 她就那樣靜靜地躺著,像睡著了一般线婚。 火紅的嫁衣襯著肌膚如雪遏弱。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,793評(píng)論 1 314
  • 那天塞弊,我揣著相機(jī)與錄音漱逸,去河邊找鬼。 笑死游沿,一個(gè)胖子當(dāng)著我的面吹牛饰抒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播诀黍,決...
    沈念sama閱讀 41,221評(píng)論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼袋坑,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了眯勾?” 一聲冷哼從身側(cè)響起枣宫,我...
    開封第一講書人閱讀 40,174評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎吃环,沒想到半個(gè)月后也颤,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,699評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡模叙,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,770評(píng)論 3 343
  • 正文 我和宋清朗相戀三年歇拆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,918評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡故觅,死狀恐怖厂庇,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情输吏,我是刑警寧澤权旷,帶...
    沈念sama閱讀 36,573評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站贯溅,受9級(jí)特大地震影響拄氯,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜它浅,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,255評(píng)論 3 336
  • 文/蒙蒙 一译柏、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧姐霍,春花似錦鄙麦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,749評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至恨胚,卻和暖如春骂因,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背赃泡。 一陣腳步聲響...
    開封第一講書人閱讀 33,862評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工寒波, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人急迂。 一個(gè)月前我還...
    沈念sama閱讀 49,364評(píng)論 3 379
  • 正文 我出身青樓影所,卻偏偏與公主長(zhǎng)得像蹦肴,于是被迫代替她去往敵國(guó)和親僚碎。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,926評(píng)論 2 361