【发布时间】:2020-05-08 16:47:00
【问题描述】:
我的 React 项目中有基本的 HTML,如下所示:
<div
onClick={(e) => this.handleRowClick(e, id)}>
<p>
<input
type="checkbox"
onChange={this.handleSelectOneChange} />
</p>
</div>
JS:
handleRowClick(event, item_id) {
// do stuff
}
handleSelectOneChange(event) {
event.stopPropagation();
}
当我点击复选框时,它也会在父 Div 中触发 handleRowClick。即使我在子函数中有一个stopPropagation()。但是,当我登录时,它会在子(复选框)函数之前调用父函数,因此我可以看到为什么 stopPropagation() 不起作用。
有没有更好的方法来做到这一点?还是我只需要在执行任何操作之前检查单击了哪种类型的元素。例如,在父点击功能中,如果“目标”是一个复选框,则不要执行任何操作。这似乎是一种黑客行为,而不是处理这个问题的正确方法。
【问题讨论】:
-
只是猜测,但也许复选框单击会在更改事件之前产生单击事件。您可能必须向输入添加 onclick 并阻止其传播。
标签: javascript reactjs dom onclick onchange