javascript - 在 ReactJS 中的一行按钮中更改按钮背景颜色
问题描述
我为数组的每个项目渲染了 3 个按钮,我希望能够切换按钮的背景颜色。但是,只有一个按钮可以连续更改其背景颜色。
If a button in a row is already clicked and it's background colour is changed, when a new button on that row is selected that button should revert to it's old background colour and the newly clicked one should change it's colour.
这是该问题的堆栈闪电战示例,以及我为尝试解决该问题所做的工作。
解决方案
您将有一个保持状态的对象,记住每个人的哪个按钮是活动的。
基本上像这样在你的组件中添加新状态。
const [activeButtons, setActiveButtons] = useState({});
这activeButtons
将是类似的{ Alexander: 1, Victoria: 2 }
指示。对于 Alexandar - 按钮 1 处于活动状态,对于 Victoria - 按钮 2 处于活动状态。
然后,将您的点击处理程序更改为此
const clickFunc = (name, buttonID) => {
setActiveButtons({ ...activeButtons, [name]: buttonID });
};
并在所有按钮上像这样使用它
onClick={() => clickFunc(name, 1)}
最后,className
像这样控制你
className={activeButtons[name] == 1 ? 'button-clicked' : 'button-unclicked'}
查看此stackblitz以获取完整代码。
推荐阅读
- python - 提供形状为 (?, n) 的占位符时出现问题
- r - 对于第三个预测变量的特定范围,我如何可视化来自 NN 的 2 个预测变量的洞察力
- html - 我的 CSS 过渡有问题,它在第一次运行时不起作用
- php - 在 mongodb PHP 中同时获取嵌套数组和更新字段
- asp.net-mvc - 在 React.JS 查看 ASP.NET MVC 中未定义的值
- python-3.x - BS4:AttributeError:“NoneType”对象没有属性“文本”
- python - pybind11 如何使用 setup.py 添加 C++ 依赖项
- c++ - 将 Boost.Python 与第三方绑定混合使用
- java - 参数化 JMeter HTTP 请求路径
- python - 带有 numpy 索引的错误(?)