gpt4 book ai didi

javascript - 防止 ReactJS 中的多个按钮颜色激活

转载 作者:行者123 更新时间:2023-12-04 10:44:10 27 4
gpt4 key购买 nike



我有两个带有 ReactJS 和 SemanticUI 的按钮。每次单击时,背景颜色都会更改。我希望一次只激活一个按钮,这意味着如果点击红色按钮,则绿色按钮会停用,反之亦然,取回默认的白色背景色。现在可以同时单击两者并更改颜色。

这是我的组件:

export class BoutonRefus extends Component {
constructor(props) {
super(props);
this.state = {
button: true
};
this.handleClick = this.handleClick.bind(this);
}

handleClick() {
this.setState({
button: !this.state.button
});
}
render() {
return (
<>
<div
className={
this.state.button
? "ui button medium refus true"
: "ui button medium refus false"
}
onClick={this.handleClick}
></div>
</>
);
}
}

export class BoutonAccepte extends Component {
constructor(props) {
super(props);
this.state = {
button: true
};
this.handleClick = this.handleClick.bind(this);
}

handleClick() {
this.setState({
button: !this.state.button
});
}
render() {
return (
<>
<div
className={
this.state.button
? "ui button medium accepte true"
: "ui button medium accepte false" &&
}
onClick={this.handleClick}
></div>
</>
);
}
}

该组件在此处调用:
boutonAccepter(t) {
return (
<>
<BoutonAccepte
className="ui button medium accepte true"
onClick={() => {this.voter(true)}}
text={t('flot.split.vote.accepter')}
/>
</>
)
}

boutonRefuser(t) {
return (
<>
<BoutonRefus
className="ui button medium refus true"
onClick={() => {
this.justifierRefus()
this.voter(false)
}}
text={t('flot.split.vote.refuser')}
/>
</>
)
}

最佳答案

您不需要类组件。只需使用 useState()为您的本地状态 Hook 并制作一个功能组件。此外,为每个按钮制作不同的组件似乎是多余的。试试这个,当然只是粘贴你的类名:)

  function Buttons(){
const [selectedButton, setSelectedButton] = React.useState();

return (
<div>
<button type="button"
className={selectedButton === "refuse" ? "active-classname" : "inactive-classname"}
onClick={() => setSelectedButton("refuse")}>Refus</button>
<button type="button"
className={selectedButton === "refuse" ? "active-classname" : "inactive-classname"}
onClick={() => setSelectedButton("refuse")}>Accepte</button>
</div>
);
}

关于javascript - 防止 ReactJS 中的多个按钮颜色激活,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59792482/

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