javascript - 在 this.state 构造函数中访问状态对象
问题描述
我有一个有 2 个对象(玩家)的状态,其中只有 1 个可以是轮流玩家。
如何保存玩家转入状态,以便我可以使用它的数据?
class App extends React.Component {
constructor(props) {
super(props);
this.state = {
playerOne: {
name: "foo"
},
playerTwo: {
name: "bar"
}
playerOnTurn: {} // This has to become the same Object as 'playerOne'.
}
}
}
我尝试了以下三件事:
1)直接访问状态(状态内):
playerOnTurn: this.state.playerOne
不幸的是,它不起作用,因为由于仍在构建状态,因此尚未定义状态。
2)两次写入相同的对象:
playerOnTurn: { name: "foo" }
它有效,但我不想写两次,因为一个播放器可以包含许多属性。就可维护性而言,这似乎是一个糟糕的解决方案。因为属性可以稍后添加/删除,这可能导致它们变得不相同。
3)在设置状态之前声明对象:
class App extends React.Component {
constructor(props) {
super(props);
const playerOne = {
name: "foo"
}
this.state = {
playerOne: playerOne,
playerTwo: {
name: "bar"
}
playerOnTurn: playerOne
}
}
}
它可以工作,但就可读性而言,它似乎不是一个很好的解决方案。因为我以不同的方式宣布两位球员。
也许它需要不同的方法?onTurn
例如,通过为每个玩家添加一个布尔值?
欢迎任何意见/建议。
解决方案
您的第三个选项是正确的,如果您希望它看起来不像您以不同的方式声明它们,您可以这样做,
const playerOne = {
name: "foo"
}
const playerTwo = {
name: "bar"
}
this.state = {
playerOne,
playerTwo,
playerOnTurn: playerOne
}
推荐阅读
- adsense - Kaspersky Anti-Banner System is blocking AdSense in my website
- python - Error in Sckit learn code: " digits: Bunch Instance of 'tuple' has no 'target' memberpylint(no-member) " .How to fix?
- dart - 如何在不同持续时间的颤动中生成定时器?
- android - Flutter - Text not visible inside FlatButton with FittedBox
- android - Unable to handle volley response as JsonObject
- python - How to get a selection part in a crawler result
- nginx - Nginx Validation failed due to conflict server name
- reactjs - 在反应中更新三元运算符内的状态
- oauth-2.0 - 如何使用 Oauth2 将 Google Classroom 连接到 Bubble.io?
- android - 如何将 Uint8List 呈现为 pdf?