1、生命週期(lifecycle
)簡述⑴呼叫元件建構函式。建構函式沒有返回型別,沒有引數,使用super()
呼叫父類的構造器
⑵使用set,get
設定元件屬性,常在set
方法內監控乙個布林變數來實現失效機制
⑶呼叫addchild()
方法將元件新增到父元件顯示列表中,flex
將自動呼叫createchildren()
,invalidateproperties()
,invalidatesize()
,invalidatedisplaylist()
。只有將元件新增到父容器中,flex
才能確定它的大小(size)
,設定它所繼承樣式(style)
屬性,或者在螢幕上畫出它
⑷元件的parent
屬性設定為對父容器的引用
⑸樣式(style)
設定⑹元件分發preinitialize
事件⑺呼叫元件createchildren()
方法⑻呼叫invalidateproperties()
,invalidatesize()
,invalidatedisplaylist()
失效方法,flex
將在下乙個「渲染事件」(render event)
期間對相應的commitproperties()
,measure()
,updatedisplaylist()
方法進行呼叫。這個規則唯一例外就是當使用者設定元件的height
和width
屬性時, flex
不會呼叫measure()
方法。也就是說,只有當元件的explicitwidth
和explicitheight
屬性是nan
時flex
才會呼叫measure()
方法。⑼元件分發initialize
事件。此時元件所有的子元件初始化完成,但元件尚未更改size
和布局,可以利用這個事件在元件布局之前執行一些附加的處理
⑽在父容器上分發childadd
事件⑾在父容器上分發initialize
事件⑿在下乙個「渲染事件」(render event)
中, flex
執行以下動作:
a.呼叫元件的commitproperties()
方法b.
呼叫元件的measure()
方法c.
呼叫元件的layoutchrome()
方法d.
呼叫元件的updatedisplaylist()
方法e.
在元件上分發updatecomplete
事件⒀如果commitproperties()
,measure()
,updatedisplaylist()
方法呼叫了invalidateproperties()
,invalidatesize()
,invalidatedisplaylist()
方法,則flexh
會分發另外乙個render
事件⒁在最後的render
事件發生後, flex
執行以下動作:
a.設定元件visible
屬性使其可視
b.元件分發creationcomplete
事件,元件的大小(size)
和布局被確定,這個事件只在元件建立時分發一次
c.元件分發updatecomplete
事件。無論什麼時候,只要元件的布局(layout)
,位置,大小或其它可視的屬性發生變化就會分發這事件,然後更新元件來正確地顯示。
2、為什麼使用失效機制(invalidation mechanism)
一種情況是,當設定了元件的多個屬性後,比如button
控制項的label
和icon
屬性,我們需要所有屬性被設定後一次性執行commitproperties(), measure(), updatedisplaylist()
方法,而不是設定過label
屬性後執行一遍這些方法,然後在設定icon
屬性後又執行一次這些方法。
另一種情況是幾個元件同時更改了它們的字型大小。程式更改字型大小的執行速度大大快於flex
更新應用的速度,因此要在確定最終更改字型之後才開始更新布局。另外,flex
需要協調布局操作以消除任何冗餘過程,而不是在每個元件更新它的字型大小之後都執行一次布局操作。
flex
使用「失效機制(invalidation mechanism
)」來同步元件的更改。flex
用一系列方法的呼叫,比如在setter
方法內監控乙個變更變數來標記元件的某些東西已經發生變化,然後在下乙個「渲染事件(renderevent
)」中觸發元件的commitproperties(), measure(), layoutchrome()
,updatedisplaylist()
檢查這些布林變數來完成最終的變更邏輯。這樣做的額外好處就是setter
方法可以更迅速地返回,把對新屬性值的處理留給了commitproperties()
方法。失效方法及其對應的觸發函式如下:
invalidateproperties()
通知元件,以使下次螢幕更新時,它的commitproperties()
方法被呼叫。
invalidatesize()
通知元件,以使下次螢幕更新時,它的measure()
方法被呼叫。
invalidatedisplaylist()
通知元件,以使下次螢幕更新時它的layoutchrome()
方法和updatedisplaylist()
方法能被呼叫。
當元件呼叫乙個「失效」方法時,它就通知flex
該元件已經被更新。當多個元件呼叫失效
方法,flex
會在schedules
中協調這些更新,以使這些更新操作在下一次螢幕更新時一起執行。注意,createchildren()
沒有對應的失效方法,它會在呼叫後被立即執行。
深入學習Flex元件生命週期
生命週期 lifecycle 簡述 呼叫flex元件建構函式。建構函式沒有返回型別,沒有引數,使用super 呼叫父類的構造器 使用set,get設定flex元件屬性,常在set方法內監控乙個布林變數來實現失效機制 呼叫addchild 方法將flex元件新增到父flex元件顯示列表中,flex將自...
元件生命週期
三大階段 失效階段,提交階段,度量階段 失效階段 對元件屬性setter函式中,若有發生改變,則標記屬性失效,為了防止多次呼叫setter而導致頻繁更改屬性,所以呼叫屬性失效函式,當當前ui存放進 layoutmannger的失效佇列中,並新增layoutmannger的延遲偵聽,在下一幀才進行相應...
元件生命週期
元件生命週期指的是元件從建立到銷毀的過程,在這個過程中的一些不同的階段,vue會呼叫指定的一些元件方法 基本生命週期函式有下面幾個階段 每乙個階段都對應著 之前 和 之後 兩個函式 beforecreate 初始化階段,應用不多 created 在例項建立完成後被立即呼叫,該階段完成了對data中的...