当父组件绑定了onTouch,其子组件Button绑定了onClick,如何做到点击Button只响应Button的onClick,而不用响应父组件的onTouch?

清风明月 显示全部楼层 发表于 2023-8-31 09:32:33

【问题描述】

当父组件绑定了onTouch,其子组件Button绑定了onClick,如何做到点击Button只响应Button的onClick,而不用响应父组件的onTouch?

子组件:

struct Item{
build() {
Row() {
Button("点击我")
.width(100)
.width(100)
.backgroundColor('#f00')
.onClick(()=>{
console.log("Button onClick")
})
}
}
}

父组件:

ForEach(this.List, (item)=>{
ListItem(){
Item()
}
.width('100%')
.padding(10)
.onTouch((e)=>{
console.info('Button onTouch')
})
})
}

运行结果:

1693382883979.jpg

您尚未登录,无法参与评论,登录后可以:
参与开源共建问题交流
认同或收藏高质量问答
获取积分成为开源共建先驱

精彩评论1

努力写bug

沙发 发表于 2023-8-31 16:36:43
可以在Button组件中绑定onTouch,并在onTouch中使用stopPropagation()阻止onTouch冒泡传递到父组件阻止冒泡传递。
  1. build() {
  2.   Row() {
  3.     Button("点击我")
  4.       .width(100)
  5.       .width(100)
  6.       .backgroundColor('#f00')
  7.       .onClick(()=>{
  8.         console.log("Button onClick")
  9.       })
  10.       .onTouch((e) => {
  11.         console.log("Button onTouch")
  12.         e.stopPropagation()
  13.       })
  14.   }
  15.   .onTouch(() => {
  16.     console.log("Row onTouch")
  17.   })
  18. }
复制代码

Copyright   ©2023  OpenHarmony开发者论坛  京ICP备2020036654号-3 |技术支持 Discuz!

返回顶部