在React Inputs中的onKeyDown / onChange之前执行的文档上的EventListener是什么?

时间:2019-03-08 07:49:09

标签: javascript reactjs event-handling stoppropagation

我已附加一个事件侦听器,以检测文档正文上的“ 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也包含我的输入作为第一项。我想只是为了防止泡沫。

0 个答案:

没有答案