css - 当我单击 React 中的按钮时,如何保持多个按钮的边框发生变化?
问题描述
首先,感谢您帮助我!当我喜欢按钮时,我试图通过使用焦点和活动来更改按钮边框颜色
button {
margin: 5px;
width: 44px;
height: 32px;
background-color: white;
border: 1px solid silver;
border-radius: 15%;
&:active,
&:focus {
border: 1px solid black;
}
但是,当我单击一个按钮时,它也会更改按钮的边框颜色。但是,当我单击另一个按钮时,它会更改边框颜色,但第一次单击的按钮边框会更改为原来的。这意味着我只能更改其中一种按钮的边框颜色。如何保留几个按钮的边框颜色,此外,当我重新单击同一个按钮时,我想将其更改为原始颜色。
如上图,我只能更改一个按钮边框颜色。
updateSize = e => {
const { history, location } = this.props;
const name = e.currentTarget.value;
const currentQueryString = location.search;
const url = new URLSearchParams(currentQueryString);
const isSizeExist = url.getAll('size').includes(name);
if (isSizeExist) {
filterSizeExist();
} else {
filterSizeNotExist();
}
applyQueryStringToURL();
function filterSizeExist() {
const sizes = url.getAll('size');
const isCertainSizeExist = sizes.includes(name);
if (isCertainSizeExist) {
const filteredSizes = sizes.filter(size => size !== name);
url.delete('size');
filteredSizes.forEach(size => url.append('size', size));
}
}
function filterSizeNotExist() {
url.append('size', name);
}
function applyQueryStringToURL() {
const qs = url.toString();
const query = `${url.toString() ? '?' : ''}` + qs;
history.push('/products' + query);
}
this.setState({ selectedItemSize: url.getAll('size') });
};
<div className="sizes">
<div className="HorizontalLine" />
<span>사이즈</span>
<div className="sizeLists">
<button onClick={this.updateSize} value="230" key="1">
230
</button>
<button onClick={this.updateSize} value="235" key="2">
235
</button>
<button onClick={this.updateSize} value="240" key="3">
240
</button>
<button onClick={this.updateSize} value="245" key="4">
245
</button>
<button onClick={this.updateSize} value="250" key="5">
250
</button>
<button onClick={this.updateSize} value="255" key="6">
255
</button>
<button onClick={this.updateSize} value="260" key="7">
260
</button>
<button onClick={this.updateSize} value="265" key="8">
265
</button>
<button onClick={this.updateSize} value="270" key="9">
270
</button>
<button onClick={this.updateSize} value="275" key="10">
275
</button>
<button onClick={this.updateSize} value="280" key="11">
280
</button>
</div>
<div className="HorizontalLine" />
</div>
解决方案
如果我是对的,你想做类似的事情:
- 如果我单击它们一次,使边框处于活动状态
- 当我再次点击它们时删除边框
- 保持边界,直到我再次点击它们
所以,
- 使用一个
useState()
和一个布尔值(处理点击事件) - 每当有人单击
btn
一次或两次时,分别更改布尔值。 - 使用
if
条件,如果布尔值为真,className = 'bordered'
否则''
希望你有这个想法!, 我想说什么。
推荐阅读
- elasticsearch - 无法使用公共 ip 连接到 Elasticsearch EC2 端口 9200
- javascript - 我想找到与数组 Java Script 中的字符串完全匹配
- git - 我应该采取什么样的行动来获取“master”分支中的最新源代码?
- python - 无法调用“wm”命令:应用程序已被销毁
- javascript - 谷歌地图上的标记聚类不起作用但显示所有位置?
- flutter - 如何使 FloatingActionButton 居中对齐
- python - SQLAlchemy python相同地复制表并将其粘贴到其他地方
- fish - `ls > fifo &` blocks fish shell
- c - 写入地址 0x0090000 时发生访问冲突
- python - 两列取决于第三列的值。如何链接这些值