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 ...