【发布时间】:2019-01-18 22:06:21
【问题描述】:
我正在通过 websocket 向 React 应用程序获取数据。我有一个大对象,其中包含游戏数据。它的属性之一是玩家对象数组,如下所示:
{
propertyX: "X",
players: [{player1}, {player2}, {player3}],
propertyY: "Y"
}
问题是,在我的数据库和来自 websocket(Chrome 中的网络选项卡)的响应中,保留了推送的那些播放器对象的顺序,即使我在将游戏插入到组件状态之前 console.log 也可以。然而,当我访问状态时,我会在这个数组中得到不同的玩家顺序,它是按他们在游戏中得分的地方排序的。
来自这个原始数据:
players: [{ place: 2 }, { place: 3 }, { place: 1 }]
我的状态是这样的:
players: [{ place: 1 }, { place: 2 }, { place: 3 }]
这种行为的原因可能是什么?
@编辑 这行代码用于一个游戏
console.log(game.players[0].place)
this.setState({ game }, () => {
console.log("callback", game.players[0].place, this.state.game.players[0].place)
});
输出:
4
callback, 1, 1
添加了包含整个组件代码的 pastebin: https://pastebin.com/hHLQMR6y
【问题讨论】:
标签: javascript arrays reactjs object websocket