亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

梳理一下vue中的生命周期

 更新時間:2020年12月30日 11:20:28   作者:CRMEB技術(shù)團隊  
看過很多人講vue的生命周期,但總是被繞的云里霧里,尤其是自學(xué)的同學(xué),可能js的基礎(chǔ)也不是太牢固,聽起來更是吃力,那我就已個人之淺見,以大白話的方式給大家梳理一下,如有不準確的地方,歡迎指正!

什么是生命周期?

生命周期,以個人之淺見,即一個事物從誕生到消亡的一個過程!

以人的一生來做類比,其實就可以簡單粗暴的將生命周期看作人的一生,人這一出生就開始了一段美好(艱難)的旅程,一生中每個成長的階段都會對應(yīng)的去做每個階段該做的事,比如,上幼兒園,小學(xué),中學(xué),高中,大學(xué),工作(比如我就在辛苦的碼字),結(jié)婚等等直到百年以后,塵歸塵,土歸土,這就是人的生命周期!

vue也有這樣的一個生命周期,也會在執(zhí)行到每個階段做一些事情,不同的是vue在每個對應(yīng)的階段是通過生命周期函數(shù)去做的,此刻再去看一下vue官網(wǎng)對生命周期的描述就好理解多了!

vue官網(wǎng)的描述:

每個 Vue 實例在被創(chuàng)建時都要經(jīng)過一系列的初始化過程——例如,需要設(shè)置數(shù)據(jù)監(jiān)聽、編譯模板、將實例掛載到 DOM 并在數(shù)據(jù)變化時更新 DOM 等。同時在這個過程中也會運行一些叫做生命周期鉤子的函數(shù),這給了用戶在不同階段添加自己的代碼的機會。

簡單來說就是: 在 Vue 從創(chuàng)建實例到最終完全消亡的過程中,會執(zhí)行一系列的方法,用于對應(yīng)當前 Vue 的狀態(tài),這些方法我們叫它:生命周期鉤子!

來看我給大家找的一張圖,可以保存起來,等待后學(xué)學(xué)習(xí)使用的深入,再看這張圖:

根據(jù)上圖可知,vue的生命周期一共有8個鉤子函數(shù),這8個函數(shù)描繪了一個vue的一生,下來我們詳細來看看這8個生命周期函數(shù),以便更好的理解Vue的生命周期!

vue的8個生命周期函數(shù)

配合上圖觀看

1.beforeCreate:在實例初始化之后,數(shù)據(jù)觀測 (Data Observer) 和 event/watcher 事件配置之前被調(diào)用。

2.created:在實例創(chuàng)建完成后被立即調(diào)用。在這一步,實例已完成以下的配置:數(shù)據(jù)觀測 (data observer)、屬性和方法的運算,watch/event 事件回調(diào);然而,掛載階段還沒開始,$el 屬性目前不可見。

3.beforeMount:在掛載開始之前被調(diào)用,相關(guān)的 render 函數(shù)首次被調(diào)用。

4.mounted:el 被新創(chuàng)建的 vm.$el 替換,并掛載到實例上去之后調(diào)用該鉤子。

如果 root 實例掛載了一個文檔內(nèi)元素,當 mounted 被調(diào)用時 vm.$el 也在文檔內(nèi)(PS:注意 mounted 不會承諾所有的子組件也都一起被掛載。

如果你希望等到整個視圖都渲染完畢,可以用 vm.$nextTick 替換掉 mounted:, vm.$nextTick會在后面的篇幅詳細講解,這里大家需要知道有這個東西。

5.beforeUpdate:數(shù)據(jù)更新時調(diào)用,發(fā)生在虛擬 DOM 打補丁之前。這里適合在更新之前訪問現(xiàn)有的 DOM,比如手動移除已添加的事件監(jiān)聽器。
6.updated:由于數(shù)據(jù)更改導(dǎo)致的虛擬 DOM 重新渲染和打補丁,在這之后會調(diào)用該鉤子。當這個鉤子被調(diào)用時,組件 DOM 已經(jīng)更新,所以現(xiàn)在可以執(zhí)行依賴于 DOM 的操作,然而在大多數(shù)情況下,你應(yīng)該避免在此期間更改狀態(tài)。如果要相應(yīng)狀態(tài)改變,通常最好使用計算屬性或 watcher 取而代之(PS:計算屬性與 watcher 會在后面的篇幅中進行介紹)。
7.beforeDestroy:實例銷毀之前調(diào)用,在這一步,實例仍然完全可用。
8.destroyed:Vue 實例銷毀后調(diào)用。調(diào)用后,Vue 實例指示的所有東西都會解綁定,所有的事件監(jiān)聽器會被移除,所有的子實例也會被銷毀。

代碼驗證:

下面的例子我故意將生命周期鉤子函數(shù)的順序打亂,并編號,但它還是會自動按照執(zhí)行順序輸出,就可以驗證其上圖中的流程,你也手動試試吧!

<div id="app">
 <button @click="clickCounter()">點擊</button>
 <p>{{ count }}</p>
</div>
 
 <script type="text/javascript">
  var app = new Vue({
  el: '#app',
  data:{
   count: 1
  },
  methods:{
   clickCounter(){
   this.count += 1
   }
  },
  created: function(){
   console.log('2. 實例已經(jīng)創(chuàng)建')
  },
  beforeCreate: function(){
   console.log('1. 實例初始化')
  },
  mounted:function(){
   console.log('4. 掛載到實例')
  },
  beforeMount:function(){
   console.log('3. 掛載開始之前')
  },
  beforeUpdate: () => {
   console.log('數(shù)據(jù)更新時調(diào)用')
  },
  updated:function(){
   console.log('更新數(shù)據(jù)重新渲染DOM')
  },
  beforeDestroy:function(){
   console.log('實例銷毀之前調(diào)用')
  },
  destroyed:function(){
   console.log('實例銷毀之后調(diào)用')
  }
  })
  
  /*點擊頁面銷毀vue對象, 銷毀之后實例將會釋放*/
  // 銷毀之后,再次點擊就不起作用了
  document.onclick=function(){
   app.$destroy();
  };
 </script>

注意: 最后我手動將這個實例銷毀了,點擊之后執(zhí)行一次,后邊再點擊就不起作用了,測試的時候先把銷毀代碼端注釋掉,然后再放開,進行測試!

3個關(guān)于vue組件的生命周期鉤子

  1. activated:keep-alive 組件激活時調(diào)用(PS:與組件相關(guān),關(guān)于 keep-alive 會在講解組件時介紹)。
  2. deactivated:keep-alive 組件停用時調(diào)用(PS:與組件相關(guān),關(guān)于 keep-alive 會在講解組件時介紹)。
  3. errorCaptured :當捕獲一個來自子孫組件的錯誤時被調(diào)用,此鉤子會收到三個參數(shù):錯誤對象、發(fā)生錯誤的組件實例以及一個包含錯誤來源信息的字符串,此鉤子可以返回 false 以阻止該錯誤繼續(xù)向上傳播。

寫在最后

生命周期這塊知識點,在這一塊我們只需要有所了解,對其大概使用有個基本的掌握,等待學(xué)習(xí)的深入以及理解的深入,在回過頭來看著一塊的內(nèi)容,結(jié)合Vue的源碼去看會收獲良多!

以上就是梳理一下vue中的生命周期的詳細內(nèi)容,更多關(guān)于vue 生命周期的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • vue?element如何添加遮罩層

    vue?element如何添加遮罩層

    這篇文章主要介紹了vue?element如何添加遮罩層問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • 利用FetchEventSource在大模型流式輸出的應(yīng)用方式

    利用FetchEventSource在大模型流式輸出的應(yīng)用方式

    這篇文章主要介紹了利用FetchEventSource在大模型流式輸出的應(yīng)用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Vue 報錯Error: No PostCSS Config found問題及解決

    Vue 報錯Error: No PostCSS Config foun

    這篇文章主要介紹了Vue 報錯Error: No PostCSS Config found問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • Vue+Video.js實現(xiàn)視頻抽幀并返回抽幀圖片Base64

    Vue+Video.js實現(xiàn)視頻抽幀并返回抽幀圖片Base64

    這篇文章主要為大家詳細介紹了Vue如何利用Video.js實現(xiàn)視頻抽幀并返回抽幀圖片Base64,文中的示例代碼講解詳細,感興趣的小伙伴可以了解下
    2024-01-01
  • npm install卡在“sill idealTree buildDeps“問題的兩種解決方法

    npm install卡在“sill idealTree buildDeps“問題的兩種解

    本文主要介紹了npm install卡在“sill idealTree buildDeps“問題的兩種解決方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-03-03
  • vue+echarts實帶漸變效果的折線圖

    vue+echarts實帶漸變效果的折線圖

    這篇文章主要為大家詳細介紹了vue+echarts實帶漸變效果的折線圖,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • 快速解決Error: error:0308010C:digital envelope routines::unsupported的三種解決方案

    快速解決Error: error:0308010C:digital envelope ro

    因為 node.js V17版本中最近發(fā)布的OpenSSL3.0, 而OpenSSL3.0對允許算法和密鑰大小增加了嚴格的限制,下面通過本文給大家分享快速解決Error: error:0308010C:digital envelope routines::unsupported的三種解決方案,感興趣的朋友一起看看吧
    2024-02-02
  • vue3學(xué)習(xí)筆記之自定義組件舉例

    vue3學(xué)習(xí)筆記之自定義組件舉例

    這篇文章主要給大家介紹了關(guān)于vue3學(xué)習(xí)筆記之自定義組件的相關(guān)資料,組件系統(tǒng)是Vue.js其中一個重要的概念,它提供了一種抽象,讓我們可以使用獨立可復(fù)用的小組件來構(gòu)建大型應(yīng)用,需要的朋友可以參考下
    2023-08-08
  • vue element table 表格請求后臺排序的方法

    vue element table 表格請求后臺排序的方法

    今天小編就為大家分享一篇vue element table 表格請求后臺排序的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • vue實現(xiàn)二維碼掃碼功能(帶樣式)

    vue實現(xiàn)二維碼掃碼功能(帶樣式)

    最近接了一個移動端的項目,實現(xiàn)微信掃碼功能,今天小編利用這個平臺給大家分享vue實現(xiàn)二維碼掃描功能的實現(xiàn)代碼,需要的朋友參考下吧
    2021-08-08

最新評論