HarmonyOS @BuilderParam 可以传值么?

我有一个BaseFloorView组件,然后有个插槽container,如下:

export struct BaseFloorView {
  @Builder customBuilder() {}
  @BuilderParam container: () => void = this.customBuilder

  build() {
    Row() {
      if (this.container) {
        this.container();
      }
    }
  }

使用如下:

BaseFloorView( {
  container: this.BannerViewBuilder(new Object()),
})

@Builder BannerViewBuilder(parms: Object) {
  BannerView(parms)
}

我想通过BannerViewBuilder的参数给BannerView传值。但是container插槽好像不允许穿参,只能是container: this.BannerViewBuilder;请问能解决么?

阅读 524
1 个回答

参考如下demo:

//Index
import { MyContainer } from './MyContainer';
@Entry
@Component
struct Index {
  @State message: string = 'slot1';

  @Builder customPar(message:string) {
    Text(message)
  }
  build() {
    Row() {
      Column() {
        MyContainer({customView: () => {
          this.customPar(this.message)
        },customView2: () => {
          this.customPar('slot2')
        }})
      }
      .width('100%')
    }
    .height('100%')
  }
}
//MyContainer 
@Component
export struct MyContainer {

  @Builder customViewBuild() {}
  @BuilderParam customView: () => void = this.customViewBuild

  @Builder customViewBuild2() {}
  @BuilderParam customView2: () => void = this.customViewBuild2

  build() {
    Column() {
      Text('childBeginText')
      this.customView()
      Text('-----不同位置测试-----')
      this.customView2()
      Text('childEndText')
    }
  }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进