国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

鴻蒙開發(fā)OpenHarmony組件復(fù)用案例

這篇具有很好參考價(jià)值的文章主要介紹了鴻蒙開發(fā)OpenHarmony組件復(fù)用案例。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

概述

在開發(fā)應(yīng)用時(shí),有些場(chǎng)景下的自定義組件具有相同的組件布局結(jié)構(gòu),僅有狀態(tài)變量等承載數(shù)據(jù)的差異。這樣的組件緩存起來(lái),需要使用到該組件時(shí)直接復(fù)用, 減少重復(fù)創(chuàng)建和渲染的時(shí)間,從而提高應(yīng)用頁(yè)面的加載速度和響應(yīng)速度。

在OpenHarmony應(yīng)用開發(fā)時(shí),自定義組件被@Reusable裝飾器修飾時(shí)表示該自定義組件可以復(fù)用。在父自定義組件下創(chuàng)建的可復(fù)用組件從組件樹上移除后,會(huì)被加入父自定義組件的可復(fù)用節(jié)點(diǎn)緩存里。 在父自定義組件再次創(chuàng)建可復(fù)用組件時(shí),會(huì)通過(guò)更新可復(fù)用組件的方式,從緩存快速創(chuàng)建可復(fù)用組件。這就是OpenHarmony的組件復(fù)用機(jī)制。

本文會(huì)介紹開發(fā)OpenHarmony應(yīng)用時(shí)如何使用組件復(fù)用能力。

環(huán)境準(zhǔn)備

準(zhǔn)備一個(gè)DevEco Studio,使用真機(jī)或者Simulator模擬器來(lái)驗(yàn)證。

組件復(fù)用接口

OpenHarmony SDK文件ets\component\common.d.ts的自定義組件的生命周期里定義了aboutToReuse方法,如下:

自定義組件的生命周期回調(diào)函數(shù)用于通知用戶該自定義組件的生命周期,這些回調(diào)函數(shù)是私有的,在運(yùn)行時(shí)由開發(fā)框架在特定的時(shí)間進(jìn)行調(diào)用,不能從應(yīng)用程序中手動(dòng)調(diào)用這些回調(diào)函數(shù)。

當(dāng)一個(gè)可復(fù)用的自定義組件從復(fù)用緩存中重新加入到節(jié)點(diǎn)樹時(shí),觸發(fā)aboutToReuse生命周期回調(diào),并將組件的構(gòu)造參數(shù)傳遞給aboutToReuse。aboutToReuse函數(shù)的參數(shù)是字典類型的,鍵為組件的構(gòu)造參數(shù)變量名稱,值為組件的構(gòu)造參數(shù)實(shí)際取值。

該聲明周期函數(shù)從API version 10開始,該接口支持在ArkTS卡片中使用。

declare class CustomComponent extends CommonAttribute {
......
 /**
   * aboutToReuse Method
   *
   * @param { { [key: string]: unknown } } params - Custom component init params.
   * @syscap SystemCapability.ArkUI.ArkUI.Full
   * @crossplatform
   * @since 10
   */
  aboutToReuse?(params: { [key: string]: unknown }): void;
......
}

開發(fā)實(shí)踐

我們看下組件復(fù)用的實(shí)際使用案例。示例中,會(huì)創(chuàng)建一個(gè)圖片列表頁(yè)面,使用懶加載LazyForEach,以及組件復(fù)用能力。

創(chuàng)建數(shù)據(jù)源

首先,創(chuàng)建了一個(gè)業(yè)務(wù)對(duì)象類MyImage,包含一個(gè)image_id圖片編號(hào)和image_path圖片路徑。根據(jù)實(shí)際業(yè)務(wù)的不同,會(huì)有差異,此例僅用于演示。

然后,創(chuàng)建一個(gè)數(shù)據(jù)源類ImageListDataSource,并構(gòu)造一個(gè)列表對(duì)象imageList。

可以看到,構(gòu)造了10000條記錄。 在工程的/resources/images文件夾下有50張圖片。

每條記錄中,包含一個(gè)編號(hào),從0到9999。

記錄中,還一個(gè)一個(gè)圖片路徑,不同的記錄,編號(hào)不會(huì)重復(fù),圖片路徑可能重復(fù)。

至此,數(shù)據(jù)源類創(chuàng)建完畢。

export class MyImage {
  image_id: string
  image_path: string
  constructor(image_id: string, image_path: string) {
    this.image_id = image_id
    this.image_path = image_path
  }
}

export class ImageListDataSource extends BasicDataSource {
  private imageList: MyImage[] = []
  public constructor() {
    super()
    for (let i = 0;i < 10000; i++) {
      let imageStr = `/resources/images/photo${(i % 50).toString()}.jpg`
      this.imageList.push(new MyImage(i.toString(), imageStr))
    }
  }
  public totalCount(): number {
    return this.imageList.length
  }
  public getData(index: number): MyImage {
    return this.imageList[index]
  }
......
}

創(chuàng)建復(fù)用組件

創(chuàng)建好數(shù)據(jù)源類后,我們?cè)倏聪驴蓮?fù)用組件的代碼。

使用裝飾器@Reusable來(lái)標(biāo)記一個(gè)組件是否屬于可復(fù)用組件。

我們創(chuàng)建的可復(fù)用組件有一個(gè)狀態(tài)變量@State item,構(gòu)造該自定義組件時(shí),父組件會(huì)給子母件傳遞構(gòu)造數(shù)據(jù)。

還需要實(shí)現(xiàn)組件復(fù)用聲明周期回調(diào)函數(shù)aboutToReuse,在這個(gè)函數(shù)里,通過(guò)params把構(gòu)造數(shù)據(jù)傳遞給可復(fù)用組件。

我們?cè)诤瘮?shù)aboutToReus里,再單獨(dú)加個(gè)一個(gè)打印函數(shù),用于在組件復(fù)用時(shí),輸出一條日志記錄。

需要注意的是,正常情況下,aboutToReuse函數(shù)里除了構(gòu)造參數(shù)傳值,不要做任何耗時(shí)操作。

在可復(fù)用組件的build()方法里,為每條記錄渲染一行,包含圖片、圖片編號(hào)和圖片路徑。

圖片編號(hào)可以識(shí)別渲染的是哪一條數(shù)據(jù),用于驗(yàn)證組件復(fù)用了正確的組件。

@Reusable
@Component
struct MyListItem {
  @State item: MyImage = new MyImage('', '')

  aboutToReuse(params) {
    this.item = params.item
    Logger.info(TAG, 'aboutToReuse-,item=' + this.item.toString())
  }

  build() {
    Row({ space: 10 }) {
      Image(this.item.image_path)
        .width(50)
        .height(50)
        .borderRadius(5)
        .autoResize(false)
        .syncLoad(true)
      Blank()
      Text(this.item.image_id)
        .fontColor(Color.Black)
        .fontSize(15)
      Blank()
      Text(this.item.image_path)
        .fontColor(Color.Black)
        .fontSize(15)
    }
  }
}

入口組件

在我們的@Ent */-·- 件里,在List父組件里,可以調(diào)用可復(fù)用組件MyListItem。

通過(guò){ item: item }完成父子組件參數(shù)傳遞。

reuseId參數(shù)是可選的,用于標(biāo)記可復(fù)用組件的復(fù)用類型。屬性參數(shù)的注釋如下:

/**
   * Reuse id is used for identify the reuse type for each custom node.
   * 
   * @param { string } id - The id for reusable custom node.
   * @syscap SystemCapability.ArkUI.ArkUI.Full
   * @crossplatform
   * @since 10
   */
  reuseId(id: string)

入口組件的示例代碼如下:

@Entry
@Component
struct Index {
  private data: ImageListDataSource = new ImageListDataSource()

  build() {
    List({ space: 3 }) {
      LazyForEach(this.data, (item: MyImage) => {
        ListItem() {
          MyListItem({ item: item })
            // .reuseId(item.image_id)
        }
      }, item => item)
    }
  }
}

本文主要是對(duì)鴻蒙開發(fā)基礎(chǔ)當(dāng)中的OpenHarmony技術(shù)組件復(fù)用示例,更多鴻蒙開發(fā)OpenHarmony技術(shù)可以在主頁(yè)閱讀更多,下面分享一張鴻蒙4.0的學(xué)習(xí)路線圖:(略縮版)

鴻蒙開發(fā)xcomponent,鴻蒙開發(fā),harmonyos,華為,程序員,移動(dòng)開發(fā),OpenHarmony,鴻蒙開發(fā),鴻蒙

高清完整版可以在主頁(yè)保存↓↓↓(附文檔鴻蒙4.0)

鴻蒙開發(fā)xcomponent,鴻蒙開發(fā),harmonyos,華為,程序員,移動(dòng)開發(fā),OpenHarmony,鴻蒙開發(fā),鴻蒙

注意事項(xiàng)

@Reusable之前的裝飾器的名稱為@Recycle,舊名稱不使用了。

ForEach渲染控制具有全展開的特性,不能觸發(fā)組件復(fù)用。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-803727.html

到了這里,關(guān)于鴻蒙開發(fā)OpenHarmony組件復(fù)用案例的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • HarmonyOS 鴻蒙開發(fā)DevEco Studio OpenHarmony:使用低代碼進(jìn)行開發(fā)

    HarmonyOS 鴻蒙開發(fā)DevEco Studio OpenHarmony:使用低代碼進(jìn)行開發(fā)

    OpenHarmony低代碼開發(fā)方式,具有豐富的UI界面編輯功能,遵循JS、TS開發(fā)規(guī)范 ,通過(guò)可視化界面開發(fā)方式快速構(gòu)建布局,可有效降低用戶的時(shí)間成本和提升用戶構(gòu)建UI界面的效率。 說(shuō)明 支持使用低代碼進(jìn)行JS/eTS頁(yè)面開發(fā),本章節(jié)以開發(fā)eTS頁(yè)面為例,介紹低代碼功能及使用方法。

    2024年02月19日
    瀏覽(89)
  • HarmonyOS 鴻蒙開發(fā)DevEco Studio OpenHarmony:編譯構(gòu)建概述

    目錄 OpenHarmony構(gòu)建體系 構(gòu)建工具Hvigor 構(gòu)建插件hvigor-ohos-plugin 工程目錄及配置文件說(shuō)明 如何構(gòu)建應(yīng)用/服務(wù) 啟動(dòng)應(yīng)用/服務(wù)構(gòu)建 查看編譯過(guò)程

    2024年02月22日
    瀏覽(93)
  • OpenHarmony鴻蒙南向開發(fā)案例:【智能門鈴】

    OpenHarmony鴻蒙南向開發(fā)案例:【智能門鈴】

    樣例簡(jiǎn)介 智能門鈴?fù)ㄟ^(guò)監(jiān)控來(lái)訪者信息,告訴主人門外是否有人按鈴、有陌生人靠近或者無(wú)人狀態(tài)。主人可以在數(shù)字管家中遠(yuǎn)程接收消息,并根據(jù)需要進(jìn)行遠(yuǎn)程取消報(bào)警和一鍵開鎖。同時(shí),也可以通過(guò)室內(nèi)屏幕獲取門外狀態(tài)。室內(nèi)屏幕顯示界面使用DevEco Studio 編寫的js應(yīng)用,

    2024年04月26日
    瀏覽(19)
  • OpenHarmony鴻蒙南向開發(fā)案例:【智能貓眼(基于3518開發(fā)板)】

    OpenHarmony鴻蒙南向開發(fā)案例:【智能貓眼(基于3518開發(fā)板)】

    樣例簡(jiǎn)介 本Demo是基于Hi3518開發(fā)板,使用開源OpenHarmony開發(fā)的RTSP協(xié)議流媒體應(yīng)用。達(dá)到將Hi3518開發(fā)板中攝像頭獲取的數(shù)據(jù)通過(guò)RTSP協(xié)議傳輸?shù)绞謾C(jī)并顯示 。 rtsp實(shí)現(xiàn)可參考文檔:openharmony_1.0.1實(shí)現(xiàn)RTSPServer 運(yùn)行效果 樣例原理 如上圖所示,手機(jī)播放3518攝像頭采集的視頻數(shù)據(jù)。 工

    2024年04月28日
    瀏覽(41)
  • HarmonyOS/OpenHarmony(Stage模型)卡片開發(fā)AbilityStage組件容器

    AbilityStage是一個(gè)Module級(jí)別的組件容器,應(yīng)用的HAP在首次加載時(shí)會(huì)創(chuàng)建一個(gè)AbilityStage實(shí)例,可以對(duì)該Module進(jìn)行初始化等操作。 AbilityStage與Module一一對(duì)應(yīng),即一個(gè)Module擁有一個(gè)AbilityStage。 DevEco Studio默認(rèn)工程中未自動(dòng)生成AbilityStage,如需要使用AbilityStage的能力,可以手動(dòng)新建一個(gè)

    2024年02月11日
    瀏覽(22)
  • HarmonyOS/OpenHarmony應(yīng)用開發(fā)-Stage模型應(yīng)用/組件級(jí)配置

    HarmonyOS/OpenHarmony應(yīng)用開發(fā)-Stage模型應(yīng)用/組件級(jí)配置

    在開發(fā)應(yīng)用時(shí),需要配置應(yīng)用的一些標(biāo)簽,例如應(yīng)用的包名、圖標(biāo)等標(biāo)識(shí)特征的屬性。本文描述了在開發(fā)應(yīng)用需要配置的一些關(guān)鍵標(biāo)簽。圖標(biāo)和標(biāo)簽通常一起配置,可以分為應(yīng)用圖標(biāo)、應(yīng)用標(biāo)簽和入口圖標(biāo)、入口標(biāo)簽,分別對(duì)應(yīng) app.json5配置文件 和 module.json5配置文件 文件中的

    2024年02月13日
    瀏覽(21)
  • HarmonyOS/OpenHarmony應(yīng)用開發(fā)-Stage模型UIAbility組件使用(一)

    HarmonyOS/OpenHarmony應(yīng)用開發(fā)-Stage模型UIAbility組件使用(一)

    一、UIAbility組件概述 1.概述 UIAbility組件是一種包含UI界面的應(yīng)用組件,主要用于和用戶交互。 UIAbility組件是系統(tǒng)調(diào)度的基本單元,為應(yīng)用提供繪制界面的窗口;一個(gè)UIAbility組件中可以通過(guò)多個(gè)頁(yè)面來(lái)實(shí)現(xiàn)一個(gè)功能模塊。每一個(gè)UIAbility組件實(shí)例,都對(duì)應(yīng)于一個(gè)最近任務(wù)列表中的

    2024年02月11日
    瀏覽(33)
  • HarmonyOS/OpenHarmony應(yīng)用開發(fā)-Stage模型UIAbility組件使用(五)

    HarmonyOS/OpenHarmony應(yīng)用開發(fā)-Stage模型UIAbility組件使用(五)

    UIAbility組件間交互(設(shè)備內(nèi)) UIAbility是系統(tǒng)調(diào)度的最小單元。在設(shè)備內(nèi)的功能模塊之間跳轉(zhuǎn)時(shí),會(huì)涉及到啟動(dòng)特定的UIAbility,該UIAbility可以是應(yīng)用內(nèi)的其他UIAbility,也可以是其他應(yīng)用的UIAbility(例如啟動(dòng)三方支付UIAbility)。 本文將從如下場(chǎng)景分別介紹設(shè)備內(nèi)UIAbility間的交互

    2024年02月16日
    瀏覽(30)
  • HarmonyOS/OpenHarmony應(yīng)用開發(fā)-Stage模型UIAbility組件使用(六)

    HarmonyOS/OpenHarmony應(yīng)用開發(fā)-Stage模型UIAbility組件使用(六)

    本文將從如下場(chǎng)景分別介紹設(shè)備內(nèi)UIAbility間的交互方式。 啟動(dòng)應(yīng)用內(nèi)的UIAbility。啟動(dòng)應(yīng)用內(nèi)的UIAbility并獲取返回結(jié)果。啟動(dòng)其他應(yīng)用的UIAbility。啟動(dòng)其他應(yīng)用的UIAbility并獲取返回結(jié)果。啟動(dòng)UIAbility的指定頁(yè)面。通過(guò)Call調(diào)用實(shí)現(xiàn)UIAbility交互(僅對(duì)系統(tǒng)應(yīng)用開放)。 當(dāng)使用隱式

    2024年02月16日
    瀏覽(23)
  • HarmonyOS鴻蒙原生應(yīng)用開發(fā)設(shè)計(jì)- 服務(wù)組件庫(kù)

    HarmonyOS鴻蒙原生應(yīng)用開發(fā)設(shè)計(jì)- 服務(wù)組件庫(kù)

    HarmonyOS設(shè)計(jì)文檔中,為大家提供了一些已經(jīng)設(shè)計(jì)好的原生服務(wù)組件庫(kù),開發(fā)者可以根據(jù)需要直接引用。 開發(fā)者直接使用官方提供的服務(wù)組件庫(kù)樣式,既可以符合HarmonyOS原生應(yīng)用的開發(fā)上架運(yùn)營(yíng)規(guī)范,又可以防止使用別人的內(nèi)容產(chǎn)生的侵權(quán)意外情況等,減少自主創(chuàng)作設(shè)計(jì)的工作

    2024年02月08日
    瀏覽(91)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包