嗨所以這裏的情況。我建立一個井字遊戲反應並且我有3個部件 1. GameParent 2.板3. gameControls爲什麼我的console.log顯示如果我使用的是同一對象的不同屬性值? reactjs
我有GameParent部件內部的函數具有兩個狀態屬性稱爲AI和遊戲,其是對象。我將這些物體作爲道具傳遞給棋盤組件。它也有一個叫做startGame()函數
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);
}
當this.state.Game.start()被調用時有一個叫應改變遊戲對象內部的狀態爲「正在運行」
財產我將startGame()函數傳遞給我的gameControls組件,並將其附加到我的start按鈕onClick處理程序。
我的板組件處理電路板上的平方的點擊次數,但只註冊點擊,如果Game.status ===「運行」,但我一直有一個狀態===「開始」獲取對象。
所以當我添加這4個console.logs,當我打印出來只有這個,我看到Game對象的狀態是「開始」,但是當我console.log this.state和this.state.Game,狀態設置爲「正在運行」!
我很困惑爲什麼會發生這種情況......我猜這是React更新它的孩子的方式,但是我沒有從閱讀render()和setState()的工作方式中找到解釋。或者,當我將函數和對象傳遞給子組件時,我可能並不完全理解「this」是如何影響的。
如果你們想看到完整的代碼,這裏是鏈接 http://codepen.io/comc49/pen/WRqBXr?editors=0110
這可能會是http://stackoverflow.com/q/23392111/218196相同的問題。 –