0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

鸿蒙OS开发实例:【装饰器-@BuilderParam】

jf_46214456 来源:jf_46214456 作者:jf_46214456 2024-03-28 17:40 次阅读

背景

这是一个基础概念,其实没有什么原因,练习过程中,自然可以感受到其用法,后期加上真实项目的演练,会形成习惯

功能核心理念

“在自定义组件中添加一个点击跳转操作。若直接在组件内嵌入事件方法,将会导致所有引入该自定义组件的地方均增加了该功能。为解决此问题,ArkUI引入了@BuilderParam装饰器”

这样的场景在任何平台任何公司都会遇到,是否采用在公共组件中定义某个功能还是在外部定义某个功能,都是取决于实际业务场景发生的概率。

@BuilderParam 要告知是:HarmonyOS有应对这样的机制
|

核心代码

@Entry
@Component
struct BuilderParam2Index {
  label: string = 'Parent'

  @Builder GlobalBuilder1($$: { label: string }) {
    Text(`${this.label}`).fontColor(Color.White)

    Text($$.label)
      .fontColor(Color.White)
      .width('100%')
      .height(50)
      .backgroundColor(Color.Green)
  }

  build() {
    Column({ space: 30 }) {

      //一. 通过参数初始化组件
      BuilderParamChild2({ aBuilder1: this.GlobalBuilder1 })

      BuilderParamChild2({ label: 'Child', aBuilder1: this.GlobalBuilder1 })

      //二. 通过尾随闭包初始化组件, 如果组件中包含两个及以上@BuilderParam函数,则无法使用此种初始化方式
      BuilderParamChild2(){}

      BuilderParamChild2({ label: 'Child' }) {}

      BuilderParamChild2({ label: 'Child' }) {
        this.GlobalBuilder1({ label: 'global Builder label2' })
      }

      BuilderParamChild2({ label: 'Child' }) {
        Text('自定义初始化文字').fontColor(Color.Orange)
      }

    }
    .width('100%')
    .height('100%')
    .padding({ top: px2vp(111) })
    .alignItems(HorizontalAlign.Center)
    .justifyContent(FlexAlign.Center)
  }
}


@Component
struct BuilderParamChild2 {
   label: string = "Child"
  // 有参数类型,指向的GlobalBuilder1也是有参数类型的方法
  @BuilderParam aBuilder1: ($$: { label: string }) = > void;

  build() {
    Column() {

      Text('BuilderParamChild').fontColor(Color.Red)
  
      this.aBuilder1({ label: 'global Builder label' })

    }.width('100%').backgroundColor(Color.Green)
  }
}

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 鸿蒙OS
    +关注

    关注

    0

    文章

    128

    浏览量

    4279
收藏 人收藏

    评论

    相关推荐

    鸿蒙OS开发实例:【装饰器@Observed@ObjectLink】

    加深对@Observed@ObjectLink 装饰器使用的理解,以小故事做注释
    的头像 发表于 03-28 17:05 459次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>OS</b><b class='flag-5'>开发</b><b class='flag-5'>实例</b>:【<b class='flag-5'>装饰</b>器@Observed@ObjectLink】

    鸿蒙OS应用程序开发

    这份学习文档主要是带领大家在鸿蒙OS上学习开发一个应用程序,主要知识点如下:1、U-Boot引导文件烧写方式;2、内核镜像烧写方式;3、镜像运行。
    发表于 09-11 14:39

    鸿蒙OS适用的全场景到底什么意思?

    鸿蒙系统(HarmonyOS),第一款基于微内核的全场景分布式OS,是华为自主研发的操作系统。华为在开发者大会HDC.2019上正式发布了鸿蒙系统,该系统将率先部署在智慧屏、车载终端、
    发表于 09-25 09:25

    鸿蒙os系统是什么意思 鸿蒙os系统有什么作用

    大家都很熟悉华为,那么华为近年新研发出来的鸿蒙os系统是什么意思?下面与大家分享华为鸿蒙os系统是什么意思的教程。鸿蒙
    发表于 12-17 11:34

    HarmonyOS/OpenHarmony应用开发-ArkTS语言@BuilderParam引用@Builder函数

    引入了@BuilderParam装饰,@BuilderParam用来装饰指向@Builder方法的变量,
    发表于 05-30 11:01

    OpenHarmony装饰指定自定义组件:@BuilderParam装饰

    引入了@BuilderParam装饰,@BuilderParam用来装饰指向@Builder方法的变量,
    发表于 09-27 16:02

    鸿蒙 OS 应用开发初体验

    的 IDE、鸿蒙生态的开发语言 ArkTS,通过模拟运行起来了鸿蒙 OS 版 HelloWorld。对于已经有移动
    发表于 11-02 19:38

    鸿蒙OS 2.0手机开发者Beta版发布会在京举办

    三个月前,鸿蒙OS 2.0正式在华为开发者大会2020亮相。12月16日,鸿蒙OS 2.0手机开发
    的头像 发表于 12-16 09:29 1.8w次阅读

    鸿蒙OS2.0手机开发者Beta版登场

    12 月 16 日,华为宣布正式推出鸿蒙 OS 的手机开发者 Beta 版,并正式面向个人/企业开发者公测鸿蒙 2.0,
    的头像 发表于 12-16 14:39 1914次阅读

    华为发布鸿蒙OS Beta版

    昨天华为发布鸿蒙OS Beta版了?鸿蒙系统一直在按照既有步伐前进,现在华为发布鸿蒙OS Beta版,而且一些生态
    的头像 发表于 12-17 08:41 2590次阅读

    华为鸿蒙OS 2.0开发者公测版本大批量向已申请开发者推送

    4 月 27 日,华为鸿蒙 OS 2.0 开发者公测版本大批量向已申请的开发者推送,随后网上出现大量鸿蒙
    的头像 发表于 05-12 09:26 2849次阅读

    鸿蒙OS千呼万唤始出来

    从2019年在华为开发者大会上公布鸿蒙OS开始,围绕着鸿蒙OS的话题始终没有停止过,而华为也坚持不懈地为
    的头像 发表于 06-01 15:56 2334次阅读

    鸿蒙os怎么升级

    6月2日,华为正式发布了鸿蒙armonyOS 2系统,那么鸿蒙os如何升级?现将鸿蒙os升级方式告知如下。
    的头像 发表于 06-08 16:26 2485次阅读

    鸿蒙os和安卓的区别,鸿蒙与安卓比有什么优势

    华为鸿蒙系统已经发布,鸿蒙系统和安卓都是在Linux基础上开发出来的,所以很多小伙伴都想知道鸿蒙os和安卓系统之间的区别是什么?华为
    的头像 发表于 06-17 09:58 1.3w次阅读

    鸿蒙OS开发教学:【编程之重器-装饰器】

    @StorageLink 9. @Provide 10. @Consume 11. @Observed 12. @Builder 13. @BuilderParam 14.
    的头像 发表于 04-01 16:09 135次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>OS</b><b class='flag-5'>开发</b>教学:【编程之重器-<b class='flag-5'>装饰</b>器】