javascript - setState 更新所有状态值而不是单独更新?
问题描述
开始学习 React,在我的项目中,我试图在每个玩家单击按钮时为他们生成一个随机数。我正在NumberGenerator
为两个玩家重复使用该组件,但不幸的是,此时每个按钮单击都会同时为两个玩家设置状态,并且不允许单独更新状态。谁可以帮我这个事?
珍惜你的时间,
class App extends React.Component {
state = {
userScores : [
{score: 0}
{score: 0}
],
buttonToggle: "enabled"
}
generateRandomNumber = (player) => {
let randomNumber = Math.round(Math.random() * 100);
if (player === 1) {
this.setState({
userScores : [
{score: randomNumber}
],
buttonToggle: ''
})
} else {
this.setState({
userScores : [
{score: randomNumber}
],
buttonToggle: ''
})
}
}
render() {
return (
<div className="App">
<h1> <u> Death Roll</u> </h1>
<h4> Player 1 </h4>
<NumberGenerator id = "p1" userscores = {this.state.userScores[0].score} generate = {() => this.generateRandomNumber(1)} buttontoggle = {this.state.buttonToggle} />
<h4> Player 2 </h4>
<NumberGenerator userscores = {this.state.userScores[1].score} generate = {() => this.generateRandomNumber(2)} buttontoggle = {this.state.buttonToggle} />
<ScoreCard number = {this.state.userScores[1].score} />
</div>
);
}
}
解决方案
推荐阅读
- angular - 从列表重定向到 3 个不同的组件
- python - Python中简单迭代函数的并行化
- python - 如何在 Python 中使用 httpx(VS 请求)发出异步 HTTP 请求?
- database - 如何选择数据库管理系统?
- javascript - 使用 sinon 如何以一种方式伪造/存根/模拟不存在的 JS API,而不是 sinon.restore 之后删除它的所有痕迹?
- android - RecyclerView 重新创建 ViewHolder 而不是重新绑定
- python - 如何在 discord.py 中获取服务器所有者名称
- xcode - 如何从 Xcode/Swift 构建中删除“僵尸”框架
- flutter - 颤振:索引超出范围
- python - 图像的形态学操作