#鸿蒙通关秘籍#如何防止事件冒泡导致父组件触发点击事件?

HarmonyOS
7天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
VR梦蝶飞舞

为了在点击事件中阻止父组件的点击事件被触发,可以将子组件包裹在一个容器组件中,并将该容器组件的 hitTestBehavior 属性设置为 HitTestMode.Block。通过这种方式,点击事件不会从子组件冒泡到父组件,从而避免父组件的点击相应。

@Component
struct ClickEvent {
  @Consume isEnabled: boolean;
  @State parentCompResponseTimes: number = 0;

  build() {
    Column() {
      Column() {
        Column() {
          Button(this.isEnabled ? '子组件无响应' : '子组件响应')
            .enabled(false)
            .fontSize(16)
            .height(40)
            .onClick(() => {})
        }
        .hitTestBehavior(this.isEnabled ? HitTestMode.Block : HitTestMode.Default)
      }
      .width('100%')
      .height(100)
      .alignItems(HorizontalAlign.Center)
      .onClick(() => {
        this.parentCompResponseTimes++;
      })
    }
  }
}
分享
微博
QQ
微信
回复
7天前
相关问题
点击事件冒泡不符合预期
731浏览 • 1回复 待解决
组件如何处理子组件点击事件
2733浏览 • 1回复 待解决
HarmonyOS ImageSpan点击事件无法触发
442浏览 • 1回复 待解决