HarmonyOS 自定义组件的隐藏和显示?

自定义组件的显示和隐藏有什么特定的生命周期吗

现在需要在隐藏和显示的时候做特殊的操作

阅读 489
1 个回答

没有用@Entry修饰的自定义组件,没有每次显示隐藏时触发的生命周期可用,可通过以下demo实现:

@Component
struct CComponent {
  //交给父组件控制
  @Link flage: Visibility
  build() {
      Column() {
        Text('自定义组件')
          .fontSize(20)
          .width('90%')
          .fontColor(0xCCCCCC) }
      .width('100%')
      .margin({ top: 50 })
      .height('100%')
      .visibility(this.flage)
    }
}

//父组件
@Entry @Component
struct VisibilityExample {
  @State @Watch("onVisibleChange") flage: Visibility = Visibility.Visible
 onVisibleChange() {
    console.log("flage: ", this.flage)
  }
  build() {
    Column() {
      Column() {
        Button("Hidden")
          .onClick(() => {
            this.flage = Visibility.Hidden
          })
        Button("Visible")
          .onClick(() => {
            this.flage = Visibility.Visible
          })
        Button("None")
          .onClick(() => {
            this.flage = Visibility.None
          })
        CComponent({ flage: this.flage })
      }.width('90%').
      border({ width: 1 }) }
    .width('100%')
    .margin({ top: 5 })
  }
}