HarmonyOS 鸿蒙Next @Builder 如何以数组形式传递
HarmonyOS 鸿蒙Next @Builder 如何以数组形式传递
场景: 一个自定义组件内部有一个list, list的每一项内容都可由用户自定义, 参数改如何传递
想法1: 定义一个BuilderParam 参数, 使用尾随闭包形式传递; 问题: 无法获取到用户传入了多少个子组件, 无法遍历
想法2: 定义一个builder数组 Array<() => void>, 利用数组遍历; 问题: forEach内部 item无法执行
父组件:
自定义组件:
求指点, 问题在哪, 该怎么实现
- 自定义组件Index使用ForEach来进行不同[@Builder](/user/Builder)函数的渲染,可以使用builderArr声明的wrapBuilder数组进行不同[@Builder](/user/Builder)函数效果体现。整体代码会较整洁。
-
[@Builder](/user/Builder)
function MyBuilder(value: string, size: number) {
Text(value)
.fontSize(size)
}
[@Builder](/user/Builder)
function YourBuilder(value: string, size: number) {
Text(value)
.fontSize(size)
.fontColor(Color.Pink)
}
const builderArr: WrappedBuilder<[string, number]>[] = [wrapBuilder(MyBuilder), wrapBuilder(YourBuilder)];
[@Entry](/user/Entry)
[@Component](/user/Component)
struct Index {
[@Builder](/user/Builder) testBuilder() {
ForEach(builderArr, (item: WrappedBuilder<[string, number]>) => {
item.builder('Hello World', 30)
}
)
}
build() {
Row() {
Column() {
this.testBuilder()
}
.width('100%')
}
.height('100%')
}
}