gpt4 book ai didi

javascript - 在 react.js 中单击按钮时添加类

转载 作者:技术小花猫 更新时间:2023-10-29 12:00:34 24 4
gpt4 key购买 nike

我已经在 React 上工作了几个星期了,虽然我已经掌握了大部分基本语法(属性、状态),但我仍在努力与一些概念建立联系,最显着的是添加类当状态发生变化时。我正在尝试构建一个 simon says 游戏,其中包含四个按钮,全部使用 Button 组件构建。这些最初设置为具有 0.3 的不透明度和 false 的事件状态。单击时,状态“事件”变为真,但我终生无法弄清楚如何添加可以使按钮完全不透明的 css 类。这是我的代码:

class App extends Component {
constructor(){
super();
this.state = {
active: false
}
}
handleClick(){
this.setState({active: !this.state.active})
}
renderButtons(i, f){
return <Button value={i} className="button" id={f} active= {this.state.active} onClick={() => this.handleClick()}/>
}
render() {
return (
<div className="App">
{this.renderButtons("red", "buttonRed")}
{this.renderButtons("blue", "buttonBlue")}
{this.renderButtons("green", "buttonGreen")}
{this.renderButtons("yellow", "buttonYellow")}
</div>
);
}
}

还有我的CSS:

.button{
width: 100px;
height: 45px;
opacity: .3;
margin: 0 auto;
margin-bottom: 30px;
}
#buttonRed{
background: red;
}
#buttonBlue{
background: blue;
}
#buttonGreen{
background: green;
}
#buttonYellow{
background: yellow;
}

所以,此时此刻,我只想在单击按钮时添加一个类,同时仍保留组件的“按钮”类。谁能帮忙?

最佳答案

React 有几种方法可以做到这一点。第一个是 Tudor Ilisoi 建议的,它只是连接字符串。第二种方法是给 className 一个 Object 而不是 string。这种方式可以说更简单,但需要您添加 classnames 模块。您可以使用 npm install --save classnamesyarn add classnames 安装它。你可以导入它:

import classNames from 'classnames';

然后您可以通过以下方式使用它:

<button className={classNames({button: true, active: this.state.active})} />

第一对花括号只是告诉 React 我们正在传递一个动态属性,第二对只是对象的普通 JavaScript 语法。请注意,该对象由 classNames() 函数包装。如果我们早点声明它,我们可以很容易地做到:

render(){
const classes = classNames({
button: true, // we always want this class
active: this.state.active, // only add this class if the state says so
});

return (
<button className={classes} />
);
}

关于javascript - 在 react.js 中单击按钮时添加类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42523006/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com