反应useEffect依赖项数组:要包含的内容

问题描述

我正在开发一个小型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 (将#修改为@)