首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React onKeyDown事件

React onKeyDown事件
EN

Stack Overflow用户
提问于 2018-10-30 13:57:01
回答 1查看 748关注 0票数 5

我在React中创建自己的lightbox,并且在实现keyDown事件方面有问题。当我打开图像时,我希望图像- 1的键是a,图像+1的键是d,我只实现了console.log(e.key),以检查是否所有操作正常。我发现了一个问题,我的KeyDown事件只有当我关注左右键时才能工作。当我点击照片键不工作。

灯箱:

代码语言:javascript
复制
<div 
  onKeyDown={this.nextButtonImage} 
  onClick={this.closeLightbox} 
  className="lightbox-container">
  <div className="lightbox">
    <button onClick={this.closeLightbox} className="lg-close">
      <i className="fas fa-times" />
    </button>
    <button onClick={this.prevImage} className="lg-arrows lg-left">
      <i className="fas fa-caret-left" />
    </button>
    <button onClick={this.nextImage} className="lg-arrows lg-right">
      <i className="fas fa-caret-right" />
    </button>
    <img src={this.images[this.state.openImage].url} alt="" />
  </div>
</div>

keyDown事件:

代码语言:javascript
复制
nextButtonImage = (e) => {
  console.log(e.key);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-30 14:10:24

这是正确的,因为事件按键是附加到一个元素。当您处理输入时,默认上下文会很有用。当您需要全局事件时(事件是由上/下传播的),您可以依赖于窗口对象或文档对象:

代码语言:javascript
复制
componentDidMount(){
  document.addEventListener('keydown', (event) => {
    const keyName = event.key;
    alert('keydown event\n\n' + 'key: ' + keyName);
  });
}

componentWillUnmount(){ 
  // Remove the listener before unmount
}

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53065958

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档