【发布时间】:2020-07-16 13:02:56
【问题描述】:
所以,我有 100 个来自数组的映射按钮,类似这样的
{
buttons.map((button, index) =>
<StyledGameButton
key={index}
value={button}
onClick={this.checkButton}>
{ button < 10 ? `0${button}` : button }
</StyledGameButton>
)
}
我希望用户点击从 0 到 99 的所有按钮,所以当他点击例如 0 时,按钮应该改变颜色。我做了功能检查他是否点击了正确的按钮,如果是,那么我将 data-attr 添加到该按钮(这就是我更改按钮颜色的方式):
checkButton = e => {
const buttonId = e.currentTarget.getAttribute('value');
const nextButton = this.state.currentButton === null ? 0 : this.state.currentButton + 1;
if (buttonId == nextButton){
this.setState({
currentButton: parseInt(buttonId),
});
if (this.state.currentButton === 99) {
this.gameEnd();
};
e.currentTarget.setAttribute('data-status', 'correct');
}
}
问题是我想制作重置按钮,这会将所有按钮更改为“未点击”,因此我必须一键从所有按钮中删除 data-attr。我怎样才能做到这一点?或者有没有更好的解决方案来管理单个按钮的“状态”而不创建 100 个状态?
【问题讨论】:
-
this post可能重复
-
那个帖子解决了你的问题吗?请提供一些反馈将不胜感激。见What should I do when someone answers my question?
标签: javascript reactjs state