OpenHarmony ETS坑2,@BuilderParam BUG(点击按钮后内容没有被隐藏)
OpenHarmony ETS坑2,@BuilderParam BUG(点击按钮后内容没有被隐藏)
源码:
@Entry
@Component
struct Index {
@State isVisible:boolean = true;
build() {
Column() {
BugPanel() {
Column() {
if(this.isVisible) {
Text("这是要隐藏的内容")
.fontSize(40)
}
BugButton({
click:() => {
this.isVisible = false;
}
})
}
}
}
}
}
@Component
struct BugPanel {
[@BuilderParam](/user/BuilderParam) children:() => void;
build(){
Column(){
this.children()
}
}
}
@Component
struct BugButton {
click:() => void;
build() {
Button("隐藏")
.onClick(this.click)
}
}
点击"隐藏"按钮,事件已触发isVisible
也改变,但是内容没有被隐藏,如果把BugPanel
换成任意非自定义容器则正常
楼主您好,已反馈给开发人员,请您耐心等待,感谢您的支持
希望这个问题尽快解决,比较严重,而且经常这样使用,当然这里只是简单Demo示例,看不出重要性,
BugPanel里面的状态数据全部失效,
楼主您好,这个问题在新版本已经修复,请同步更新最新的sdk版本,
@Entry @Component struct Index { build() { Column() { BugPanel() { FixBug() } } } }
@Component struct BugPanel { @BuilderParam children: () => void; build(){ Column(){ this.children() } } }
@Component struct FixBug { @State isVisible:boolean = true; build() { Column() { if(this.isVisible) { Text(“这是要隐藏的内容”) .fontSize(40) } BugButton({ click:() => { this.isVisible = false; } }) } } }
@Component struct BugButton { click:() => void; build() { Button(“隐藏”) .onClick(this.click) } }
临时解决方案就是把面板内容移到新的自定义组件,状态也在自定义组件里
在OpenHarmony ETS中,使用@BuilderParam
时,如果点击按钮后内容没有被隐藏,可能是由于状态管理或事件绑定问题。首先,确保在按钮的点击事件中正确更新了状态变量。其次,检查@BuilderParam
绑定的组件是否正确响应状态变化。如果状态更新但UI未刷新,可以尝试强制刷新组件或检查是否有其他逻辑阻止了隐藏操作。