1. 程式人生 > 其它 >Leetcode面試題 17.24. 最大子矩陣: 套用最大子序列和解法ac二維陣列最大子矩陣和

Leetcode面試題 17.24. 最大子矩陣: 套用最大子序列和解法ac二維陣列最大子矩陣和

在這裡插入圖片描述

Vue例項有一個完整的生命週期,也就是從開始建立、初始化資料、編譯模板、掛載Dom、渲染→更新→渲染、銷燬等一系列過程,我們稱這是Vue的生命週期。通俗說就是Vue例項從建立到銷燬的過程,就是生命週期。

每一個元件或者例項都會經歷一個完整的生命週期,總共分為三個階段:初始化、執行中、銷燬。

  1. 例項、元件通過new Vue() 創建出來之後會初始化事件和生命週期,然後執行beforeCreate鉤子函式,這個時候,資料還沒有掛載,只是一個空殼,無法訪問到資料和真實的dom,一般不做操作。

  2. 接著掛載資料,繫結事件等等,然後執行created函式,這個時候已經完成了資料的初始,且對資料做了觀測,可以使用資料,也可以更改資料,但在這裡更改資料不會觸發updated函式,且不可以進行DOM結構的互動,如果一定要在這裡操作DOM結構的話,可以使用$nextTick鉤子函式來訪問DOM結構,一般可以在這裡做初始資料的獲取。

  3. 接下來開始找例項或者元件對應的模板,在這之前template模板已匯入渲染函式編譯。當前階段虛擬Dom已經建立完成,即將開始渲染。在此時也可以對資料進行更改,不會觸發updated。

  4. 接下來開始構建render樹,渲染出真實dom,然後執行mounted鉤子函式,此時,元件已經出現在頁面中,在當前階段,真實的Dom掛載完畢,資料完成雙向繫結,可以訪問到Dom節點,可使用$refs屬性對Dom進行操作。

  5. 當元件或例項的資料更改之後,會立即執行beforeUpdate,然後vue的虛擬dom機制會重新構建虛擬dom與上一次的虛擬dom樹利用diff演算法進行對比之後重新渲染,一般不做什麼事兒。

  6. 當更新完成後,執行updated,資料已經更改完成,dom也重新render完成,可以操作更新後的虛擬dom。

  7. beforeDestroy發生在例項銷燬之前,在當前階段,vue例項完全可以被使用,可以在這時進行善後收尾工作,比如清除計時器。

  8. 之後移除事件監聽器、訂閱者和子元件,再執行destroyed,此時元件例項已經被銷燬。