问题描述
我正在开发一个小型tic-tac-toe游戏,可以按需运行。除了es-linter之外,其他一切都很好,我不想仅禁用规则,因为这可能是一个错误。因此,这是我发生问题的两个钩子之一:
useEffect(() => {
if (
board !== initialState.board &&
firstTurnIsPlayed() &&
players[currentPlayerIndex].bot
) {
// Select random empty tile
const emtpyTiles = getEmptyTiles(board);
const randomTileIndex = Math.floor(Math.random() * emtpyTiles.length);
const randomTile = emtpyTiles[randomTileIndex];
placeCurrentPlayerOnCoordinate(randomTile);
}
// eslint-disable-next-line react-hooks/exhaustive-deps
},[currentPlayerIndex]);
board
players
currentPlayerIndex
是状态,initialState
是具有初始状态值的常量,firstTurnIsPlayer
是仅使用{{1} }
所以这就是我现在正在使用的功能,它就像一种魅力。每当currentPlayerIndex
发生变化,因此这是下一个玩家的新回合时,我都会检查新的currentPlayer是否是机器人。如果他是机器人,我会自动将其符号放置在随机的空白图块上,否则我什么也不会做,只能等待玩家单击空白图块。
这就是我想要的方式,而不是linter想要的方式,因为我没有将我使用的所有其他变量都放入依赖项数组中。我知道我应该这样做,以确保我的钩子不使用错误的(不是最新的)变量值。另一方面,如果我将这些变量添加到dependency数组中,则每次数组中的一个var更改时,钩子都会执行,这种情况太常见了,在某些情况下我不希望这样做。
所以我现在的问题是:
如何在满足我的要求的同时保持工作功能?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)