@Component
export struct NoteInTitle {
@Prop title: string
@Prop fontSize: number = 13
@Prop enable: boolean = true
// maxLines属性只有某些场景需要,这个导致我的build方法写了一个大的if-else,有没有更好的写法呢?
@Prop maxLines: number
build() {
if (this.maxLines) {
Text(this.title)
.fontSize(this.fontSize)
.enabled(this.enable)
.maxLines(this.maxLines)
.stateStyles({
normal: {
.fontColor($r('app.color.normal_of_title_text'))
},
disabled: {
.fontColor($r('app.color.disable_of_text'))
}
})
} else {
Text(this.title)
.fontSize(this.fontSize)
.enabled(this.enable)
.maxLines(this.maxLines)
.stateStyles({
normal: {
.fontColor($r('app.color.normal_of_title_text'))
},
disabled: {
.fontColor($r('app.color.disable_of_text'))
}
})
}
}
}
在上述代码中,创建了一个自定义组件:NoteInTitle,组件功能主要是在enable和disable时提供两种文本展示颜色;在某些场景下,需要设置maxLines属性,在外部引用该组件时,因为组件不是Text,无法单独设置maxLines;所以将maxLines属性封装在NoteInTitle内部,但这导致在为Text组件设置maxLines属性时,必须要写一个大的if else,这里有没有更好的写法呢?
设置默认参数,调用的时候不用传递该参数,默认就行: