鴻蒙開發(fā)筆記

HarmonyOS基礎(chǔ)語(yǔ)法

一.基本語(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í)不丟失類型信息,便于類的反序列化。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容