这是我的第一篇帖子,希望能够以最有帮助的方式提出问题。我对编程非常新手,并尝试使用React重新创建扫雷游戏,而且不使用任何教程。我已经实现了大部分功能,但在某些部分卡住了。我正在使用事件监听器“onContextMenu”来注册右键单击以在程序中“标记”地雷。但我无法正确地隔离它,或者可能是语法问题,防止菜单同时弹出。在JS中,这似乎非常简单,只需在事件监听器上返回false,但我无法在React中解决它。
我目前正在使用“onContextMenu”处理右键单击,并调用一个处理该事件监听器的函数来处理标记分配。我是否可以在函数内禁用上下文菜单的显示?
感谢您能提供的任何帮助!
当前呈现的div如下:
<div
contextMenu="none"
className="square"
onContextMenu={() => this.props.rightClick(props.arrayVal)}
onClick={() => {this.props.playerTurn(this.props.index)}}
style={{color:COLORS[this.props.arrayVal], backgroundImage:this.backgroundChooser(this.props.arrayVal)}}
>
{this.squareContent(this.props.arrayVal)}
</div>
被调用的函数如下所示:rightClick = (id) => {
let { board, gameWon, minesLeft } = this.state
let mineCount = minesLeft
let move = board
if (gameWon === false) {
if (board[id] === -1) {
move[id] = 9
mineCount -= 1
} else if (board[id] === 9) {
move[id] = "?"
mineCount += 1
} else if (board[id] === "?") {
move[id] = -1
}
this.setState({
board: move,
minesLeft: mineCount
})
}
}
我又浪费了很长一段时间,并请高级开发人员朋友帮忙看了看。这是解决方案。希望它能帮助其他人 :-)! 请参见下面的评论: