我在React中创建自己的lightbox,并且在实现keyDown事件方面有问题。当我打开图像时,我希望图像- 1的键是a,图像+1的键是d,我只实现了console.log(e.key),以检查是否所有操作正常。我发现了一个问题,我的KeyDown事件只有当我关注左右键时才能工作。当我点击照片键不工作。
灯箱:
<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事件:
nextButtonImage = (e) => {
console.log(e.key);
}发布于 2018-10-30 14:10:24
这是正确的,因为事件按键是附加到一个元素。当您处理输入时,默认上下文会很有用。当您需要全局事件时(事件是由上/下传播的),您可以依赖于窗口对象或文档对象:
componentDidMount(){
document.addEventListener('keydown', (event) => {
const keyName = event.key;
alert('keydown event\n\n' + 'key: ' + keyName);
});
}
componentWillUnmount(){
// Remove the listener before unmount
}
https://stackoverflow.com/questions/53065958
复制相似问题