OpenHarmony ETS坑2,@BuilderParam BUG(点击按钮后内容没有被隐藏)

OpenHarmony ETS坑2,@BuilderParam BUG(点击按钮后内容没有被隐藏)

cke_159.png

源码:

@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换成任意非自定义容器则正常


6 回复

楼主您好,已反馈给开发人员,请您耐心等待,感谢您的支持


希望这个问题尽快解决,比较严重,而且经常这样使用,当然这里只是简单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未刷新,可以尝试强制刷新组件或检查是否有其他逻辑阻止了隐藏操作。

回到顶部