其他
| 關(guān)鍵字 | 注釋 | |
|---|---|---|
| module.json5、abilities | <HarmonyOS第一課>運(yùn)行Hello World-華為開發(fā)者學(xué)堂 (huawei.com) | |
| struct | 自定義組件基于struct實(shí)現(xiàn) | |
| @Component | 賦予組件化能力 | |
| @Entry | 代表自定義組件可作為頁面入口組件 | |
| export | 需要將X文件下的組件交給Y文件下的組件使用的時候 | |
| readonly | 設(shè)置該變量為只讀 | |
| @Builder | 全局自定義構(gòu)建函數(shù):$$代表引用函數(shù) | |
| @State | 被裝飾擁有其所屬組件的狀態(tài),可以作為其子組件單向和雙向同步的數(shù)據(jù)源。當(dāng)其數(shù)值改變時,會引起相關(guān)組件的渲染刷新。 | |
| @Watch | 監(jiān)聽、觀察變量 | |
| @Prop | 被裝飾可以和父組件建立單向同步關(guān)系,@Prop裝飾的變量是可變的,但修改不會同步回父組件。 | |
| @Link | 被裝飾變量和父組件構(gòu)建雙向同步關(guān)系的狀態(tài)變量,父組件會接受來子@Link裝飾的變量的修改的同步,父組件的更新也會同步給@Link裝飾的變量。 | |
| @Provide/@Consume | @Provide/@Consume裝飾的變量用于跨組件層級(多層組件)同步狀態(tài)變量,可以不需要通過參數(shù)命名機(jī)制傳遞,通過alias(別名)或者屬性名綁定。 | |
| @Observed | @Observed裝飾class,需要觀察多層嵌套場景的class需要被@Observed裝飾。單獨(dú)使用@Observed沒有任何作用,需要和@ObjectLink、@Prop連用。 | |
| @ObjectLink | @ObjectLink裝飾的變量接收@Observed裝飾的class的實(shí)例,應(yīng)用于觀察多層嵌套場景,和父組件的數(shù)據(jù)源構(gòu)建雙向同步。 | |
| aboutToAppear/aboutToDisappear/onPageShow/onPageHide/onBackPress | 組件生命周期 | |
| router.pushUrl,router.replaceUrl | 頁面跳轉(zhuǎn)或者替換,mode參數(shù)擁有兩種模式:Single、Standard。 | |
| UIAbility | 有三種啟動模式:multiton、singleton、specified | |
| (router.getParams() as Record<string, string>)['src'] | 獲取上個頁面?zhèn)鬟f的參數(shù) | |
| Stack | 疊放布局 | |
| ===和==區(qū)別 | ==是把類型轉(zhuǎn)成一樣的再比較,而===則是直接比較類型才比較值 | |
| private value : undefined = undefined | 不確定如何初始化,用于開啟了嚴(yán)格空值檢測時使用 | |
| private value : X undefined | 被視為聯(lián)合類型,運(yùn)行時可能有額外的開銷 | |
| let a = null! | 告訴編譯器這個值后面肯定會賦值不會為null | |
| @Styles | 抽取 公共樣式、事件 不可以傳遞參數(shù)@Styles裝飾器:定義組件重用樣式-UI范式基本語法-學(xué)習(xí)ArkTS語言-基礎(chǔ)入門 - 華為HarmonyOS開發(fā)者 (huawei.com) | |
| @Extend | 擴(kuò)展 特定組件 樣式、事件 可以傳遞參數(shù) @Extend裝飾器:定義擴(kuò)展組件樣式-UI范式基本語法-學(xué)習(xí)ArkTS語言-基礎(chǔ)入門 - 華為HarmonyOS開發(fā)者 (huawei.com) | |
| @Builder | 抽取 結(jié)構(gòu)、樣式、事件 可以傳遞參數(shù)@Builder裝飾器:自定義構(gòu)建函數(shù)-UI范式基本語法-學(xué)習(xí)ArkTS語言-基礎(chǔ)入門 - 華為HarmonyOS開發(fā)者 (huawei.com) | |
| context.eventHub.emit | 主線程內(nèi)通信用EventHub | |
| emitter.on | 主線程與Worker間通信用Emitter |
生命周期:
| 關(guān)鍵字 | 注釋 |
|---|---|
| onCreate | 在UI頁面可見之前 |
| onWindowStageCreate | 例如用戶打開游戲應(yīng)用,正在打游戲的時候,有一個消息通知,打開消息,消息會以彈窗的形式彈出在游戲應(yīng)用的上方,此時,游戲應(yīng)用就從獲焦切換到了失焦?fàn)顟B(tài),消息應(yīng)用切換到了獲焦?fàn)顟B(tài)。對于消息應(yīng)用,在onWindowStageCreate回調(diào)中,會觸發(fā)獲焦的事件回調(diào),可以進(jìn)行設(shè)置消息應(yīng)用的背景顏色、高亮等操作。 |
| Foreground | 進(jìn)入前臺:例如用戶打開地圖應(yīng)用查看當(dāng)前地理位置的時候,假設(shè)地圖應(yīng)用已獲得用戶的定位權(quán)限授權(quán)。在UI頁面顯示之前,可以在onForeground回調(diào)中打開定位功能,從而獲取到當(dāng)前的位置信息。 |
| Background | 進(jìn)入后臺:例如用戶打開地圖應(yīng)用查看當(dāng)前地理位置的時候,假設(shè)地圖應(yīng)用已獲得用戶的定位權(quán)限授權(quán)。在UI頁面顯示之前,可以在onForeground回調(diào)中打開定位功能,從而獲取到當(dāng)前的位置信息。 |
| onWindowStageDestroy | 可以在該回調(diào)中釋放UI頁面資源 |
| onDestroy | 可以在onDestroy回調(diào)中進(jìn)行系統(tǒng)資源的釋放、數(shù)據(jù)的保存等操作 |
基礎(chǔ)組件:
<HarmonyOS第一課>從簡單的頁面開始-華為開發(fā)者學(xué)堂 (huawei.com)
| 關(guān)鍵字 | 注釋 |
|---|---|
| Text | 文本 |
| Image | 圖片,支持加載網(wǎng)絡(luò)圖片 |
| TextInput | 編輯文本框 |
| Button | 按鈕 |
| LoadingProgress | 加載進(jìn)度 |
容器組件:
<HarmonyOS第一課>從簡單的頁面開始-華為開發(fā)者學(xué)堂 (huawei.com)
| 關(guān)鍵字 | 注釋 |
|---|---|
| Column | 垂直方向布局的容器 |
| Row | 水平方向布局的容器 |
| 屬性名稱 | 描述 |
|---|---|
| justifyContent | 設(shè)置子組件在主軸方向上的對齊格式。 |
| alignItems | 設(shè)置子組件在交叉軸方向上的對齊格式。 |
List組件:
<HarmonyOS第一課>從簡單的頁面開始-華為開發(fā)者學(xué)堂 (huawei.com)
| 屬性名稱 | 描述 |
|---|---|
| List | 一般和子組件ListItem一起使用,List列表中的每一個列表項(xiàng)對應(yīng)一個ListItem組件 |
| ListItem | 一般使用循環(huán)搭配使用:ForEach(this.arr, (item: number) => {ListItem() { |
Grid組件:
<HarmonyOS第一課>從簡單的頁面開始-華為開發(fā)者學(xué)堂 (huawei.com)
| 屬性名稱 | 描述 |
|---|---|
| Grid | Grid組件一般和子組件GridItem一起使用,Grid列表中的每一個條目對應(yīng)一個GridItem組件。 |
| GridItem | 一般使用循環(huán)搭配使用:ForEach(this.arr, (item: string) => {GridItem() { |
| 設(shè)置4*4的九宮數(shù)據(jù)、不可滾動 | .columnsTemplate('1fr 1fr 1fr 1fr').rowsTemplate('1fr 1fr 1fr 1fr').columnsGap(10).rowsGap(10) |
| 可滾動的數(shù)據(jù) | GridItem的高度設(shè)置為固定值,例如100;僅設(shè)置columnsTemplate屬性,不設(shè)置rowsTemplate屬性,就可以實(shí)現(xiàn)Grid列表的滾動 |
列表滑動事件:
| 屬性名稱 | 描述 |
|---|---|
| onScroll | 列表滑動時觸發(fā),返回值scrollOffset為滑動偏移量,scrollState為當(dāng)前滑動狀態(tài)。 |
| onScrollIndex | 列表滑動時觸發(fā),返回值分別為滑動起始位置索引值與滑動結(jié)束位置索引值。 |
| onReachStart | 列表到達(dá)起始位置時觸發(fā)。 |
| onReachEnd | 列表到底末尾位置時觸發(fā)。 |
| onScrollStop | 列表滑動停止時觸發(fā)。 |
Tabs組件:
<HarmonyOS第一課>從簡單的頁面開始-華為開發(fā)者學(xué)堂 (huawei.com)
管理組件狀態(tài)
| 屬性名稱 | 描述 |
|---|---|
| @State | 組件內(nèi)的狀態(tài)管理:框架內(nèi)部會建立數(shù)據(jù)與視圖間的綁定 |
| @Prop | 從父組件單向同步狀態(tài):修飾子組件的變量,當(dāng)父組件中狀態(tài)變化時,該狀態(tài)值也會更新至@Prop修飾的變量;對@Prop修飾的變量的修改不會影響其父組件中的狀態(tài)。 |
| @Link | 與父組件雙向同步狀態(tài):修飾子組件@Link變量,必須是在父組件中存在的狀態(tài)變量。 |
| @Provide和@Consume | 跨組件層級雙向同步狀態(tài):在跨了很多層級的組件,在父組件使用@Provide修飾,任意一個子組件用@Consume修飾即可同步 |
彈窗
<HarmonyOS第一課>構(gòu)建更加豐富的頁面-華為開發(fā)者學(xué)堂 (huawei.com)
WebView
registerJavaScriptProxy 使用這個注冊進(jìn)WebView
數(shù)據(jù)管理:
| 屬性名稱 | 描述 |
|---|---|
| 創(chuàng)建 | onCreate中創(chuàng)建PreferencesUtil.createFontPreferences(this.context); |
<HarmonyOS第一課>保存應(yīng)用數(shù)據(jù)-華為開發(fā)者學(xué)堂 (huawei.com)
匿名內(nèi)部類:
export interface CustomPromiseClass {
call(): String;
}
let customPromise: CustomPromiseClass = {
}
return xxxx(customPromise)
如果實(shí)現(xiàn)多個方法
let requestInterface: RequestInterface = {
onSuccess() {
},
onError() {
}
};
相關(guān)語法:
| 屬性名稱 | 等同于java的描述 |
|---|---|
| let ik = [] | byte[] iK = new byte[256],長度是動態(tài)的 |
| encodeURI | URLEncoder.encode() |
| new util.Base64Helper().decodeSync(resultStr) | new String(Base64.decode(resultStr, Base64.NO_WRAP)); |
傳參的相關(guān)方法:
頁面跳轉(zhuǎn)和兩個頁面之間的數(shù)據(jù)傳遞-鴻蒙ArkTS_arkts頁面跳轉(zhuǎn)-CSDN博客
手機(jī)震動和view震動
HarmonyOS NEXT使用彈簧曲線實(shí)現(xiàn)抖動動畫及手機(jī)振動效果案例_鴻蒙開發(fā)鬧鐘抖動的動效怎樣實(shí)現(xiàn)?、-CSDN博客
等待xx秒
// 等待2s
await new Promise<void>(resolve => setTimeout(resolve, 2000))
undefined和null的區(qū)別
undefined表示變量未定義或未賦值的初始狀態(tài)值,是一個機(jī)器式標(biāo)識;
null表示一個空對象變量,本身是空對象指針,是一個程序式標(biāo)識。
object API11后報錯,可以使用以下
Const params : Record<string, Object> = router.getParams() as Record<string, Object>
渲染控制
渲染控制概述-渲染控制-學(xué)習(xí)ArkTS語言-基礎(chǔ)入門 | 華為開發(fā)者聯(lián)盟 (huawei.com)
Navigation路由
第6篇:Navigation系統(tǒng)路由表(推薦)-華為開發(fā)者論壇 | 華為開發(fā)者聯(lián)盟 (huawei.com)
異步鎖
ArkTSUtils.locks.AsyncLock
與Android不同的地方
- 當(dāng)想使用組件占滿剩下的空間時,可使用layoutWeight
- Scroll內(nèi)只能使用Column等布局,不能使用RelativeContainer,不然滾動失效
- 基于上面的一點(diǎn),Scroll內(nèi)的Column布局可以使用RelativeContainer,但是需要height('auto')
- Scroll默認(rèn)高度是100%的,所以如果有需要的話,需要給高度值