Javascript 如果我';我用的是同一个物体??反应
嗨,情况是这样的。我正在用react构建一个Tictatcoe游戏,我有3个组件 1.配子亲本 2.板 3.游戏控制 我在GameParent组件中有一个函数,它有两个状态属性,称为AI和Game,它们是对象。我将这些对象作为道具向下传递到板组件。它还有一个名为startGame()的函数 调用this.state.Game.start()时,游戏对象中有一个名为status的属性,该属性应更改为“running” 我将startGame()函数向下传递给gameControls组件,并将其连接到单击处理程序上的start button 我的棋盘组件处理棋盘方块上的点击,但它只在游戏状态为“运行”时注册点击,但我一直获得状态为“开始”的对象 因此,当我添加这4个console.logs时,当我只打印这4个时,我看到游戏对象的状态是“开始”,而当我添加console.log this.state和this.state.Game时,状态设置为“正在运行” 我很困惑为什么会发生这种事。。。我猜这是React更新它的子对象的方式,但我还没有从阅读render()和setState()的工作原理中找到解释。或者,当我将函数和对象传递给子组件时,我可能没有完全理解“这”是如何影响的 如果你们想看到完整的代码,这里是链接Javascript 如果我';我用的是同一个物体??反应,javascript,reactjs,this,reactive-programming,Javascript,Reactjs,This,Reactive Programming,嗨,情况是这样的。我正在用react构建一个Tictatcoe游戏,我有3个组件 1.配子亲本 2.板 3.游戏控制 我在GameParent组件中有一个函数,它有两个状态属性,称为AI和Game,它们是对象。我将这些对象作为道具向下传递到板组件。它还有一个名为startGame()的函数 调用this.state.Game.start()时,游戏对象中有一个名为status的属性,该属性应更改为“running” 我将startGame()函数向下传递给gameControls组件,并将其连接
this.setState
是一个异步函数,这意味着不能保证在调用this.setState
后立即设置状态。这可以解释控制台的意外输出。日志this.setState
是一个异步函数,这意味着不能保证在调用this.setState
后立即设置状态。这可以解释控制台的意外输出。日志这可能与的问题相同。这可能与的问题相同。
startGame() {
let newAI = new AI(this.state.AIIdentity);
let newGame = new Game(newAI,this.state.AIIdentity);
this.state.AI.plays(this.state.Game);
this.state.Game.start();
this.setState({
start: true,
AI: newAI,
Game: newGame,
});
console.log("THIS!!!",this)
console.log("THIS!!!",this.state)
console.log("THIS!!!",this)
console.log("THIS!!!",this.state.Game);
}