我已附加一个事件侦听器,以检测文档正文上的“ Enter”键,如下所示:
document.body.addEventListener("keydown", this.handleEnterKey, false);
private handleEnterKey(e: any) {
if (e.keyCode === 13) {
if (!this.submitDisabled) {
this.state.files.length > 1 ? this.addComponents() : this.addComponent();
}
}
}
在组件层次结构的深处,我有一个React输入:
<input
onChange={this.handleChange.bind(this)}
onKeyDown={this.onKeyDown.bind(this)}
/>
每次我在输入中单击时,都会执行应用于整个文档的 eventListener ,然后会调用输入的onChange / onKeyDown中定义的函数。如何防止这种情况发生?
我知道,如果我也将eventListeners应用于输入,并防止它们使DOM冒泡,那将是固定的,但我想使用React的Input字段属性来防止冒泡现象?
我在输入keyHandlers中尝试了 stopPropagation(),但无济于事:
private handleChange(e: any) {
e.stopPropagation();
...
}
如果我在文档的 onKeyDown 中收到事件,则清楚地表明eventPhase为3(冒泡),并且事件的Path也包含我的输入作为第一项。我想只是为了防止泡沫。