Javascript 当组件聚焦/散焦时启用/禁用密钥侦听器
我有一个应用程序(react/redux),分为两部分:Javascript 当组件聚焦/散焦时启用/禁用密钥侦听器,javascript,reactjs,keyboard-events,Javascript,Reactjs,Keyboard Events,我有一个应用程序(react/redux),分为两部分: 由GridAreas和GridArea元素组成的栅格(wysiwyg) 网格编辑器 我想为网格设置一个按键侦听器,用于侦听按键。 例如,按下应选择下一个网格区域(元素),按下Escape应选择“父级”(如果适用) 在GridEditor中,您可以通过输入字段等编辑各种GridArea元素的属性。与GridEditor交互时,尤其是与这些输入字段交互时,我不希望启用按键侦听器,因为它可以(例如)取消选择正在编辑的元素 因此,我希望在网格
- 由GridAreas和GridArea元素组成的栅格(wysiwyg)
- 网格编辑器
例如,按下应选择下一个网格区域(元素),按下Escape应选择“父级”(如果适用) 在GridEditor中,您可以通过输入字段等编辑各种GridArea元素的属性。与GridEditor交互时,尤其是与这些输入字段交互时,我不希望启用按键侦听器,因为它可以(例如)取消选择正在编辑的元素 因此,我希望在网格组件(及其子组件)处于聚焦/活动状态时启用关键侦听器,但在网格模糊/不活动时禁用关键侦听器,即GridEditor处于聚焦/活动状态
有什么建议吗?我想出来了。但不确定这是否是最好的解决方案 首先,要使事件侦听器触发DOM元素(例如
div
)上的事件,它所连接的元素必须具有焦点。我们可以通过给元素一个tabIndex
,来确保元素是可聚焦的:
<div className="myDiv" tabIndex="0" ref="myDiv" >
只有当它所附加到的DOM元素被聚焦时,才会触发此keydown侦听器:)
this.refs.myDiv.addEventListener('keydown', this.props.handleKeyPress, false)