一.基本語(yǔ)法
1.@Entry、@Component和@State都是裝飾器,@Component表示自定義組件,@Entry表示該自定義組件為入口組件,
@State表示組件中的狀態(tài)變量,狀態(tài)變量變化會(huì)觸發(fā)UI刷新。
2.頁(yè)面和自定義組件生命周期
onPageShow:頁(yè)面每次顯示時(shí)觸發(fā)。
onPageHide:頁(yè)面每次隱藏時(shí)觸發(fā)一次。
onBackPress:當(dāng)用戶點(diǎn)擊返回按鈕時(shí)觸發(fā)。
aboutToAppear:組件即將出現(xiàn)時(shí)回調(diào)該接口,具體時(shí)機(jī)為在創(chuàng)建自定義組件的新實(shí)例后,在執(zhí)行其build()函數(shù)之前執(zhí)行。
aboutToDisappear:在自定義組件即將析構(gòu)銷毀時(shí)執(zhí)行。
3.@Builder裝飾器:自定義構(gòu)建函數(shù)
3.1.組件內(nèi)自定義構(gòu)建函數(shù)
@Builder MyBuilderFunction(){ ... }
使用方法:this.MyBuilderFunction(){ ... }
3.2.全局自定義構(gòu)建函數(shù)
@Builder function MyGlobalBuilderFunction(){ ... }
使用方法:MyGlobalBuilderFunction()
4.@BuilderParam裝飾器:引用@Builder函數(shù)
4.1.初始化@BuilderParam裝飾的方法
注意:@BuilderParam裝飾的方法只能被自定義構(gòu)建函數(shù)(@Builder裝飾的方法)初始化。
@Component
struct Child {
@BuilderParam aBuilder0: () => void = this.doNothingBuilder
build(){}
}
4.2.用父組件自定義構(gòu)建函數(shù)初始化子組件@BuilderParam裝飾的方法
@Component
struct Child {
@BuilderParam aBuilder0: () => void;
build() {
Column() {
this.aBuilder0()
}
}
}
二.狀態(tài)管理V1
- @State裝飾器 使變量擁有狀態(tài)屬性的裝飾器
- @Prop裝飾器:裝飾的變量可以和父組件建立單向的同步關(guān)系,父組件變化會(huì)自動(dòng)同步到子組件,子組件對(duì)變量的修改不會(huì)自動(dòng)傳遞到父組件。
- @Link裝飾器:父子雙向同步
- @Provide裝飾器和@Consume裝飾器:與后代組件雙向同步(一對(duì)多關(guān)系)
- @Watch裝飾器 :為狀態(tài)變量設(shè)置回調(diào)函數(shù) (無(wú)法實(shí)現(xiàn)對(duì)對(duì)象、數(shù)組中某一單個(gè)屬性或數(shù)組項(xiàng)變化的監(jiān)聽)
-@Observed裝飾器和@ObjectLink裝飾器:嵌套類對(duì)象屬性變化(解決狀態(tài)失效的問題)
tip:狀態(tài)管理V1存在多種可接受外部傳入的裝飾器:@State@Prop@Link@ObjectLink (子組件參數(shù))
二.狀態(tài)管理V2
- @Local裝飾器:組件內(nèi)部狀態(tài) (無(wú)法確保@State裝飾變量的初始值一定為組件內(nèi)部定義的值)
- @Param: 組件外部輸入。(子組件接收參數(shù))
-@ObservedV2裝飾器和@Trace裝飾器:解決@Observed裝飾器和@ObjectLink調(diào)用過于復(fù)雜的問題.
-@Once:僅初始化同步一次。(@Once必須搭配@Param使用)
-@Event裝飾器 :規(guī)范組件輸出,修飾函數(shù) - @Provider和@Consumer 跨組件層級(jí)雙向同步
- @Monitor裝飾器: 狀態(tài)變量修改監(jiān)聽.
- @Computed裝飾器:計(jì)算屬性.(防止重復(fù)計(jì)算,為方法裝飾器,僅能裝飾getter方法)
- @Type :使得類屬性序列化時(shí)不丟失類型信息,便于類的反序列化。