HarmonyOS 鸿蒙Next @BuilderParam 可以传值么
HarmonyOS 鸿蒙Next @BuilderParam 可以传值么
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
看下这个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。