当前位置: 首页 > news >正文

35.HarmonyOS App(ArkUI)使用父组件@Builder装饰的方法初始化子组件@BuilderParam报错

HarmonyOS App(ArkUI)使用父组件@Builder装饰的方法初始化子组件@BuilderParam报错
Type 'void' is not assignable to type '() => void'. <tsCheck>

 去掉括号()就可以了

 

  • 装饰器: 用于装饰类、结构、方法以及变量,并赋予其特殊的含义。如上述示例中@Entry、@Component和@State都是装饰器,@Component表示自定义组件,@Entry表示该自定义组件为入口组件,@State表示组件中的状态变量,状态变量变化会触发UI刷新。
  • UI描述:以声明式的方式来描述UI的结构,例如build()方法中的代码块。
  • 自定义组件:可复用的UI单元,可组合其他组件,如上述被@Component装饰的struct Hello。
  • 系统组件:ArkUI框架中默认内置的基础和容器组件,可直接被开发者调用,比如示例中的Column、Text、Divider、Button。
  • 属性方法:组件可以通过链式调用配置多项属性,如fontSize()、width()、height()、backgroundColor()等。
  • 事件方法:组件可以通过链式调用设置多个事件的响应逻辑,如跟随在Button后面的onClick()。
  • 系统组件、属性方法、事件方法具体使用可参考基于ArkTS的声明式开发范式。

除此之外,ArkTS扩展了多种语法范式来使开发更加便捷:

  • @Builder/@BuilderParam:特殊的封装UI描述的方法,细粒度的封装和复用UI描述。
  • @Extend/@Styles:扩展内置组件和封装属性样式,更灵活地组合内置组件。
  • stateStyles:多态样式,可以依据组件的内部状态的不同,设置不同样式

index.ets 


@Builder function MyGlobalBuilderFunction(){  }@Component
struct child{@BuilderParam customBuilder:()=>void;build(){this.customBuilder()}
}@Entry
@Component
struct Index {@State message: string = 'HelloWorld'@State count: number = 666@State size2:number =12@State counter:number =0;@Builder MyBuilderFunction(){Text('aa')}fn =()=>{console.info('开始计数:'+ this.counter.toString())this.message = this.counter.toString()this.counter++}build() {Row() {Column() {child({customBuilder:this.MyBuilderFunction})Text(this.message).fontSize(50).fontWeight(FontWeight.Bold)Divider()Button("click me").onClick(()=>{this.message ="this is ArkUI"})Text($r('app.string.title_value')).fontSize(50).fontWeight(FontWeight.Bold)Divider()Text($r(this.count.toString())).fontSize(this.size2).fontColor(Color.Red).fontWeight(FontWeight.Bold)Button("add counter").onClick(function(){this.message = "abc";this.counter +=2;this.message = $r(this.counter.toString());}.bind(this))Button('开始计数').onClick(this.fn)}.width('100%')}.height('100%')}
}

 

 

 

相关文章:

  • 高中数学:抽象函数难点突破(拔高)
  • 语义分割蒸馏1:基于注意力引导的特征蒸馏方法(Attn)
  • C++ 控制语句(一)
  • 【数字图像处理matlab系列】数组索引
  • QT文件读写操作和内容提取
  • DNS 服务 Unbound 部署最佳实践
  • 集成学习 | 集成学习思想:Boosting
  • risc-v openocd for windows 编译日记
  • DaisyDisk for mac 苹果电脑磁盘清理工具
  • 双纤SFP光模块和单纤SFP光模块之间的区别
  • dump文件分析OOM及线程堆栈
  • 【LaTeX】7实现章节跳转
  • 职场口才提升之道
  • Sentry(Android)源码解析
  • 184. 部门工资最高的员工
  • Apache Pulsar 2.1 重磅发布
  • Django 博客开发教程 8 - 博客文章详情页
  • HashMap剖析之内部结构
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • MySQL-事务管理(基础)
  • nodejs调试方法
  • 飞驰在Mesos的涡轮引擎上
  • 面试遇到的一些题
  • 适配mpvue平台的的微信小程序日历组件mpvue-calendar
  • 学习使用ExpressJS 4.0中的新Router
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • ​520就是要宠粉,你的心头书我买单
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • "无招胜有招"nbsp;史上最全的互…
  • #宝哥教你#查看jquery绑定的事件函数
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (二)丶RabbitMQ的六大核心
  • (原創) 如何將struct塞進vector? (C/C++) (STL)
  • (转)VC++中ondraw在什么时候调用的
  • .aanva
  • .net 4.0 A potentially dangerous Request.Form value was detected from the client 的解决方案
  • .net 验证控件和javaScript的冲突问题
  • .NET/C# 使窗口永不获得焦点
  • .NET/C# 异常处理:写一个空的 try 块代码,而把重要代码写到 finally 中(Constrained Execution Regions)
  • .NET命令行(CLI)常用命令
  • .Net下的签名与混淆
  • .sys文件乱码_python vscode输出乱码
  • @for /l %i in (1,1,10) do md %i 批处理自动建立目录
  • [2023年]-hadoop面试真题(一)
  • [AIGC] 如何建立和优化你的工作流?
  • [Angular] 笔记 21:@ViewChild
  • [C语言][PTA基础C基础题目集] strtok 函数的理解与应用
  • [Invalid postback or callback argument]昨晚调试程序时出现的问题,MARK一下
  • [LeetCode 687]最长同值路径
  • [LeetCode] 197. 上升的温度
  • [LeetCode]: 145: Binary Tree Postorder Traversal
  • [LeetCode]Pow(x,n)
  • [MySQL]基础的增删改查