Javascript 在ReactJS中更改一行按钮的背景颜色

Javascript 在ReactJS中更改一行按钮的背景颜色,javascript,css,reactjs,Javascript,Css,Reactjs,我有3个按钮渲染的每个项目的数组,我想能够切换按钮的背景色。但是,一行中只有一个按钮应更改其背景颜色 如果一行中的某个按钮已被单击且其背景颜色已更改,则当选择该行中的新按钮时,该按钮应恢复为其旧背景颜色,而新单击的按钮应更改其颜色 下面是问题的一个例子,以及我为解决这个问题所做的努力。您将有一个按钮来保持对象处于状态,记住每个人的哪个按钮处于活动状态 基本上是这样在组件中添加新状态 const[activeButtons,setActiveButtons]=useState({}) 这里的act

我有3个按钮渲染的每个项目的数组,我想能够切换按钮的背景色。但是,一行中只有一个按钮应更改其背景颜色

如果一行中的某个按钮已被单击且其背景颜色已更改,则当选择该行中的新按钮时,该按钮应恢复为其旧背景颜色,而新单击的按钮应更改其颜色


下面是问题的一个例子,以及我为解决这个问题所做的努力。

您将有一个按钮来保持对象处于状态,记住每个人的哪个按钮处于活动状态

基本上是这样在组件中添加新状态

const[activeButtons,setActiveButtons]=useState({})

这里的
activeButtons
类似于
{Alexander:1,Victoria:2}
,表明了这一点。对于Alexandar,按钮1处于活动状态;对于Victoria,按钮2处于活动状态

然后,将单击处理程序更改为

const clickFunc = (name, buttonID) => {
    setActiveButtons({ ...activeButtons, [name]: buttonID });
};
在所有按钮上都这样使用

onClick={()=>clickFunc(名称,1)}

最后,像这样控制你的
className

className={activeButtons[name]==1?'button clicked':'button unclicked'}


检查此项查看完整代码。

您将有一个维护对象处于状态的按钮,记住每个人的哪个按钮处于活动状态

基本上是这样在组件中添加新状态

const[activeButtons,setActiveButtons]=useState({})

这里的
activeButtons
类似于
{Alexander:1,Victoria:2}
,表明了这一点。对于Alexandar,按钮1处于活动状态;对于Victoria,按钮2处于活动状态

然后,将单击处理程序更改为

const clickFunc = (name, buttonID) => {
    setActiveButtons({ ...activeButtons, [name]: buttonID });
};
在所有按钮上都这样使用

onClick={()=>clickFunc(名称,1)}

最后,像这样控制你的
className

className={activeButtons[name]==1?'button clicked':'button unclicked'}


检查完整代码。

您应该使每张卡都是唯一的,因此您需要创建一个卡组件并处理该组件内部的单击。 以下是我的解决方案:

您应该使每张卡都是唯一的,因此您需要创建一个卡组件并处理该组件内部的单击。 以下是我的解决方案:

您不应该包含指向外部来源的链接,而应该直接在帖子中包含代码。包括外部引用(比如代码链接和代码截图)是获得否决票的一个很好的方法,但事实并非如此。如果代码也发布在StackExchange上,则指向JSFIDLE或其他代码repo的链接在@LaytonGBOnly上是非常好的:“如果可以创建一个可以链接到(例如,on或)的问题的实例,那么就这样做,但也要将代码复制到问题本身。”-不应该包含指向外部源的链接,而是直接将代码包含在您的帖子中。包括外部引用(比如代码链接和代码截图)是获得否决票的一个很好的方法,但事实并非如此。如果代码也发布在StackExchange上,那么指向JSFIDLE或其他代码repo的链接在@LaytonGBOnly上是非常好的:“如果可以创建一个可以链接到(例如,on或)的问题实例,那么就这样做,但也要将代码复制到问题本身。”-