react js如何防止方向键切换控件

react js how to prevent arrow keys from switching controls

我正在开发基于浏览器的 React 游戏,玩家可以 select 将一个单位放置在战场上,然后他可以使用箭头键在地图上四处移动该单位。

问题是单位列表是一个反应单选组,按下箭头键也会将焦点从一个单选按钮切换到下一个单选按钮,这会导致另一个单位 select由应该(并且确实)移动初始单元的相同动作编辑,所以整个事情变得非常混乱。

我使用绑定到 componentDidMount 方法的事件侦听器来绑定箭头键来移动单位。

componentDidMount(){
  ...
  document.addEventListener("keydown", this.handleKeyDown.bind(this));
  document.addEventListener("keyup", this.handleKeyUp.bind(this));

虽然可能有多种方法可以解决这个问题,但我更愿意使用箭头键简单地禁用单选按钮的切换。有谁知道如何关闭它?

我找到了 this article,但它大部分都超出了我的理解范围,而且我仍然希望有更简单的方法来做到这一点。

React suggest to use preventDefault statement 而不是使用 return false:

handleKeyDown = (e) => {
 //... rest of your code
 e.preventDefault()
}

此外,您不需要在 componentDidMount 挂钩中绑定 addEventListener。该事件将从组件的 event binding 调用。

示例:

<YourComponent onKeyDown={this.handleKeyDown} onKeyUp={this.handleKeyUp} />