HarmonyOS 鸿蒙Next @BuilderParam 可以传值么

发布于 1周前 作者 nodeper 来自 鸿蒙OS

HarmonyOS 鸿蒙Next @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;请问能解决么?


更多关于HarmonyOS 鸿蒙Next @BuilderParam 可以传值么的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

看下这个demo:

//Index

import { MyContainer } from './MyContainer';

[@Entry](/user/Entry)

[@Component](/user/Component)

struct Index {

  [@State](/user/State) message: string = 'slot1';

  [@Builder](/user/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](/user/Component)

export struct MyContainer {

  [@Builder](/user/Builder) customViewBuild() {}

  [@BuilderParam](/user/BuilderParam) customView: () => void = this.customViewBuild

  [@Builder](/user/Builder) customViewBuild2() {}

  [@BuilderParam](/user/BuilderParam) customView2: () => void = this.customViewBuild2

  build() {

    Column() {

      Text('childBeginText')

      this.customView()

      Text('-----不同位置测试-----')

      this.customView2()

      Text('childEndText')

    }

  }

}

更多关于HarmonyOS 鸿蒙Next @BuilderParam 可以传值么的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


HarmonyOS 鸿蒙Next @BuilderParam 可以传值

@BuilderParam是一个装饰器,用于声明任意UI描述的一个元素,类似于Vue中的slot占位符。在HarmonyOS 鸿蒙Next中,@BuilderParam可用于自定义组件的传值。开发者可以在自定义组件中定义@BuilderParam属性,并在父组件中通过尾随闭包的方式传入对应的UI结构或函数,该函数可以调用一个被@Builder修饰的方法。

具体使用时,需要确保自定义组件中包含且仅包含一个由@BuilderParam装饰的属性,并在声明时赋予它一个默认Builder。然后,在父组件中,可以通过属性绑定的方式(如尾随闭包)将值传递给子组件。子组件接收到这些值后,可以在其build方法中使用这些值来构建UI。

需要注意的是,传值分为基础类型传值和引用类型传值,只有引用类型传值具有响应式特点。因此,在使用@BuilderParam传值时,建议传递引用类型的数据。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部