Vue - 生命周期詳解

Vue實例有一個完整的生命周期,也就是說從開始創建、初始化數據、編譯模板、掛在DOM、渲染-更新-渲染、卸載等一系列過程,我們成為Vue 實例的生命周期,鉤子就是在某個階段給你一個做某些處理的機會。
生命周期圖.jpg
生命周期文字解析.jpg

beforeCreate( 創建前 )

在實例初始化之后,數據觀測和事件配置之前被調用,此時組件的選項對象還未創建,el 和 data 并未初始化,因此無法訪問methods, data, computed等上的方法和數據。

created ( 創建后 )

實例已經創建完成之后被調用,在這一步,實例已完成以下配置:數據觀測、屬性和方法的運算,watch/event事件回調,完成了data 數據的初始化,el沒有。 然而,掛在階段還沒有開始, $el屬性目前不可見,這是一個常用的生命周期,因為你可以調用methods中的方法,改變data中的數據,并且修改可以通過vue的響應式綁定體現在頁面上,,獲取computed中的計算屬性等等,通常我們可以在這里對實例進行預處理,也有一些童鞋喜歡在這里發ajax請求,值得注意的是,這個周期中是沒有什么方法來對實例化過程進行攔截的,因此假如有某些數據必須獲取才允許進入頁面的話,并不適合在這個方法發請求,建議在組件路由鉤子beforeRouteEnter中完成

beforeMount

掛在開始之前被調用,相關的render函數首次被調用(虛擬DOM),實例已完成以下的配置: 編譯模板,把data里面的數據和模板生成html,完成了el和data 初始化,注意此時還沒有掛在html到頁面上。

mounted

掛在完成,也就是模板中的HTML渲染到HTML頁面中,此時一般可以做一些ajax操作,mounted只會執行一次。

beforeUpdate

在數據更新之前被調用,發生在虛擬DOM重新渲染和打補丁之前,可以在該鉤子中進一步地更改狀態,不會觸發附加地重渲染過程

updated(更新后)

在由于數據更改導致地虛擬DOM重新渲染和打補丁只會調用,調用時,組件DOM已經更新,所以可以執行依賴于DOM的操作,然后在大多是情況下,應該避免在此期間更改狀態,因為這可能會導致更新無限循環,該鉤子在服務器端渲染期間不被調用

beforeDestroy(銷毀前)

在實例銷毀之前調用,實例仍然完全可用,

  1. 這一步還可以用this來獲取實例,
  2. 一般在這一步做一些重置的操作,比如清除掉組件中的定時器 和 監聽的dom事件

destroyed(銷毀后)

在實例銷毀之后調用,調用后,所以的事件監聽器會被移出,所有的子實例也會被銷毀,該鉤子在服務器端渲染期間不被調用

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Vue生命周期 每個Vue實例被創建時都要經過一系列得初始化過程,舉一把栗子:需要設置數據監聽、編譯、模板、將實例...
    前端_周瑾閱讀 1,699評論 0 2
  • 1.vue基本生命周期 vue源碼中最終執行生命周期函數都是調用callHook方法,callHook函數的邏輯很...
    WHU_GIS_LJ閱讀 19,656評論 0 13
  • 這季講的是斷念實戰,大家學習了很多戒色文章,但最后那一下子就是念頭上來時,就看你的實戰表現,戒色高手都是斷念高手,...
    ZenCN閱讀 1,543評論 0 0
  • 整體思路: 先抓取某一類商品的所有的商品ID,存入Redis 從Redis取出商品ID,然后爬取此商品所有評論,存...
    tianmh閱讀 2,968評論 0 4
  • 前兩天我問了朋友一個問題:“為什么我們總是活的很焦慮?有工作,有工資可是每天仍在焦慮中度過。”朋友說:“那是因...
    森林_木閱讀 527評論 0 0