【HarmonyOS 鸿蒙 黑马程序员 学习笔记 100.1】
·
多个 @BuilderParam 传参

多个 @BuilderParam 传组件 需创建@Builder
以对象方式传@Builder传入UI
增加模块代码
老师只是简单演示了下代码功能,自己摸索,错误百出
@Preview
@Component struct c1_ui{
@State book1 : string = '说明'
@State people1 : number = 0
@State complete1 : number = 0
@State img2 : ResourceStr = $r('app.media.ic_public_car')
@State name2 : string = '名称'
@State price2 : number = 0
@BuilderParam ctbd1 : () => void = this.dfbd1
@Builder dfbd1 (){ // 无组件传入
Column(){
Text(`${this.book1}`)
Blank().layoutWeight(1)
Text(){
Span(`${this.people1}`).fontColor('#f00')
Span(' 人参与')
}.fontSize(10)
Text(`¥${this.price2.toFixed(2)}`){
Span('完成度')
Span(`${this.complete1}%`).fontColor('#f00')
}.fontSize(10)
}.justifyContent(FlexAlign.SpaceBetween).height('100%')
}
@BuilderParam ctbd2 : () => void = this.dfbd2
@Builder dfbd2 (){ // 无组件传入
Column(){
Image(this.img2).width('35%')
Blank().layoutWeight(1)
Text(`${this.name2}`).fontSize(12)
Text(`¥${this.price2.toFixed(2)}`).fontSize(12)
}.height('100%')
}
build(){
Row(){
this.ctbd1()
this.ctbd2()
}.width('25%').height('10%').justifyContent(FlexAlign.SpaceBetween)
}
}

构建模块还没出大问题
问题出在,我想左边重构,右边默认
传参搞了好久
增加页面代码
@Builder ui_c1(){
Column(){
Image($r('app.media.ic_public_arrow_right')).width('15%')
}
}
// 上面先构建Builder 下面调用传入
com.c1_ui({
ctbd1:this.ui_c1, // 传组件
img2:$r('app.media.12_2'),
name2:'腰带',
price2:499
}) // 试了好久才试出来传参 搞了一堆垃圾代码

哇100课了,不容易,
更多推荐


所有评论(0)