Arkts中@Builder如何接收函数参数
·
先给出一个基本的示例;

类似这样的开发,我们常用的选择大多是List中嵌套ListItem,又或者是写一个Column布局然后用@Builder封装公用样式;不过不管怎么写,点击不同的操作肯定是进行不同的业务;那我们就可以给@Builder传入我们自定义的函数进去;
直接上代码;
首先需要一个对象用来存储我们的函数入参,因为官网文档中提到,@Builder接收按引用传递和按值传递,但是我们这儿两种都不是,所以需要包装一层对象;
class ActionFunc {
onclick: Function = () => {}
constructor(func: Function) {
this.onclick = func;
}
}
接着,在@Builder中使用他;
@Builder
listItem(icon: ResourceStr, text: string, func?: ActionFunc) {
Row() {
Row({ space: rvp(8) }) {
Image(icon).width(rvp(20)).height(rvp(20))
Text(text).fontSize(rvp(16)).fontColor('#333333')
}
Image($r('app.media.right')).width(rvp(20)).height(rvp(20))
}
.width('100%')
.height(rvp(64))
.borderRadius(rvp(8))
.backgroundColor(Color.White)
.justifyContent(FlexAlign.SpaceBetween)
.padding({ left: rvp(16), right: rvp(16) })
.onClick(() => {
if (func) {
func?.onclick()
}
else {
promptAction.showToast({ message: "功能正在快马加鞭开发中..." })
}
})
}
那这样,我们传入参数也变得简单了,只需要定义一个函数,然后new一个对象,将我们的函数当成一个属性传进去;

这样 ,即可完成我们自定义的需求;
更多推荐



所有评论(0)