You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React井字棋自动生成Square组件状态异常问题求助

React井字棋教程循环生成Square组件异常问题

我在学习ReactJS,跟着官方井字棋教程完成第二个挑战(用循环替代硬编码生成Square组件)时遇到了异常:

  • 手动硬编码9个Square组件时功能正常:首次点击任意方块,仅该方块的UI会变为'X'
  • 使用Array.map自动生成组件后,虽能正常渲染9个方块,但首次点击任意方块时,所有自动生成的方块都会变为'X'

自动生成组件的代码如下:

function generateSquare(dimension) {
    let dimensionTranslate = [...Array(dimension).keys()];
    return(
        dimensionTranslate.map((row) => {
          return(<div className="board-row">
              {
                dimensionTranslate.map((column) => {
                  let squareIndex = (dimension*row)-row + column;
                  return <Square key={squareIndex} value={squares[{ squareIndex }]} onSquareClick={() => handleClick({ squareIndex })} />
                })
              }
            </div>
          )
        })
    )
  }

已做的排查工作:

  • 确认squareIndex可正确生成0-8的连续数值
  • 自动生成代码与手动生成代码位于同一Board组件内,手动生成的方块功能依旧正常
  • 尝试过将map替换为for循环、减少循环嵌套层数、多次确认索引逻辑正确性、将映射结果存入常量等方法,问题均未解决

问题截图:
点击任意方块后所有自动生成方块变为X的异常表现

内容的提问来源于stack exchange,提问作者Dulcis Evander

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 19:40:01