Vue 01 生命週期

2022-08-24 21:03:09 字數 2672 閱讀 7228

vue有一套完整的生命週期,從開始建立、初始化資料、編譯模板、掛在dom、渲染、更新、渲染到銷毀等一系列過程被稱為vue的生命週期。

總共分為三個階段:初始化、執行中、銷毀階段。

生命週期過程具體說明:

例項通過new vue()建立出來之後會初始化事件和生命週期,然後執行beforecreate()函式,這個時候資料並沒有掛載,只是乙個空殼,無法訪問到資料和真實dom。

開始掛載資料、繫結事件等,然後執行created()函式,這個時候可以使用和更改資料,在這裡更改資料,不會觸發updated()函式,這是渲染前倒數第二次可以更改資料的機會,這樣不會觸發其他鉤子函式,一般在這裡做初始資料的獲取。

開始尋找例項或元件對應的模板,將模板編譯為虛擬dom放入到render()函式中準備渲染,然後執行beforemount()函式,在此函式中虛擬dom已經建立完成,即將渲染,這是渲染前最後一次更改資料的機會,不會觸發其他鉤子函式,一般在這裡做初始資料的獲取。

開始渲染,渲染出真實dom,然後執行mounted()函式,此時元件已經出現在頁面中,資料和真實dom都處理完畢,事件也掛載好了,在這裡可以操作真實dom等。

當元件或例項資料更改後,會執行beforeupdate()函式,然後vue的虛擬dom機制會重新構建虛擬dom並與上一次的虛擬dom利用diff演算法進行對比,之後重新渲染。

更新完成後,執行updated()函式,資料此時已經更改完成,dom也重新渲染完畢,可以操作更新後的虛擬dom。

當經過某種途徑呼叫了$destroy()方法後,將立即執行beforedestroy()函式,這裡一般做一些善後工作,如清除定時器等。

最後將元件或例項的資料繫結、監聽去掉後,只剩下dom空殼,這時也可以執行destroyed()函式,這裡主要也是做善後工作。

其中常用的函式:

created():例項建立完成後使用。此階段完成了資料的觀測,但是未掛載,el此時還不可用,一般在這裡初始化處理一些資料。

mounted():el掛載到例項後呼叫。可在此使用ajax或axios獲取服務端資料。

beforedestroy():例項被銷毀前呼叫。主要用來清除定時器、解綁監聽的事件等。

9定時更新的廣告欄

10title

>

11<

style

>

12style

>

13head

>

1415

<

body

>

16<

div

id="mbox"

style

="background-color: black;width: 500px;height: 100px;text-align: center;line-height: 100px;margin: auto;"

>

17<

h3 style

="color:white;"

>18}

19h3

>

20div

>

21body

>

22html

>

2324

<

script

src=""

>

script

>

25<

script

>

26var

=new

vue(,

33//

例項建立後初始化資料

34created:

function

(),42

//el掛載到例項後,建立定時器

43mounted:

function

()49

else;52

t.a=

t.list[t.index];

53},

3000)54

},55

//銷毀前清除定時器

56beforedestroy:

function

()61}62

63})

64script

>

常用函式的使用示例

vue05 生命週期

首先看下面 宣告週期就是vue例項在某乙個時間點會自動執行的函式,這些函式沒有放在methods裡面,直接在vue例項下。beforecreate vue例項初始化後執行 created 外部注入,雙向繫結等完成後執行 beforemount 頁面還沒有被渲染 mounted 頁面渲染完 befor...

Vue隨筆(二)生命週期

beforecreate 建立前 created 建立後 beforemount 載入前 mounted 載入後 beforeupdate 更新前 updated 更新後 beforedestroy 銷毀前 destroyed 銷毀後 下面我們就來分別看看vue生命週期的這八個階段 1 建立前 be...

1 生命週期

not running 非執行狀態 not running inactive active background suspended inactive 前台非活動狀態 active 前台活動狀態 background 後台狀態 suspended 掛起狀態 not running inactive ...