亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

梳理一下vue中的生命周期

瀏覽:47日期:2022-10-14 13:21:20
什么是生命周期?

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

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

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

vue官網的描述:

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

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

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

梳理一下vue中的生命周期

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

vue的8個生命周期函數

配合上圖觀看

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

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

3.beforeMount:在掛載開始之前被調用,相關的 render 函數首次被調用。

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

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

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

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

代碼驗證:

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

<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. 實例已經創建’) }, beforeCreate: function(){ console.log(’1. 實例初始化’) }, mounted:function(){ console.log(’4. 掛載到實例’) }, beforeMount:function(){ console.log(’3. 掛載開始之前’) }, beforeUpdate: () => { console.log(’數據更新時調用’) }, updated:function(){ console.log(’更新數據重新渲染DOM’) }, beforeDestroy:function(){ console.log(’實例銷毀之前調用’) }, destroyed:function(){ console.log(’實例銷毀之后調用’) } }) /*點擊頁面銷毀vue對象, 銷毀之后實例將會釋放*/ // 銷毀之后,再次點擊就不起作用了 document.onclick=function(){ app.$destroy(); }; </script>

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

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

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

以上就是梳理一下vue中的生命周期的詳細內容,更多關于vue 生命周期的資料請關注好吧啦網其它相關文章!

標簽: Vue
相關文章:
主站蜘蛛池模板: 亚洲精品一区二区观看 | 亚洲黄色网址在线观看 | 亚洲毛片在线看 | 日韩精品在线一区 | 日本一本高清视频 | 一级毛片免费在线 | 国产片网站 | 色综合久久91 | 免费高清精品国偷自产在线 | 黄色直接观看 | 一级生活黄色片 | 日本特黄高清免费大片爽 | 麻豆果冻传媒一卡二卡 | 黄色大片一级片 | 日本aaaa毛片在线看 | 久久综合九色综合97飘花 | 欧美特级大片 | 丁香五六月婷婷 | 鲁大师在线观看免费播放 | 日本特级全黄一级毛片 | 中文字幕欧美日韩久久 | 日韩激情无码免费毛片 | 国产日韩免费视频 | 精品九九久久 | 免费在线观看黄色的网站 | 搜索黄色录像 | 国产精品视频一区麻豆 | 久久视频精品 | 毛片一级片 | 国模无水印一区二区三区 | 国产一级视频 | 色综合精品久久久久久久 | 国产换爱交换乱理伦片的功能 | 黄色免费大全 | 国产高清在线精品一区αpp | 国产免费麻豆 | 国产图片区 | 伊人久久成人 | 国产一级二级三级 | 国产成人综合网在线观看 | 欧美成人777 |