css - 在 react.js 中单击按钮时如何更改按钮图标
问题描述
我有一个返回按钮的反应函数。
<div className="col-6 btn-group btn-group w-100">
<AuditMenuButtons buttonValue='Pending' buttonName='Inbox' changeFilterForButton={this.props.changeFilterForButton} icon={icon_inbox}/>
<AuditMenuButtons buttonValue='Rejected' buttonName='Rejected' changeFilterForButton={this.props.changeFilterForButton} icon={icon_rejected}/>
<AuditMenuButtons buttonValue='Accepted' buttonName='Accepted' changeFilterForButton={this.props.changeFilterForButton} icon={icon_accepted}/>
</div>
下面添加功能
function AuditMenuButtons(props) {
return(
<button className="w-25 btn menu-btn p-lg-3" name={props.buttonName} value={props.buttonValue} onClick={props.changeFilterForButton}><img src={props.icon} className="pr-3 menu-btn-icons">
</img>{props.buttonName}</button>
);
}
您将在上面的代码中看到 3 个按钮。我想在单击一个按钮时更改按钮图标。单击按钮时,实际上按钮图标颜色应为绿色。图像是 .png 文件(带有绿色和银色边框)。我试过 button:active in css 它对我不起作用。图像应该保留,直到我单击另一个按钮或页面被刷新
解决方案
在这种情况下,图标部分是一个UI 状态,它必须保持在你的状态并传递给AuditMenuButtons
has props。
使用这些
props
来AuditMenuButtons
进行所需的检查。
import React,{Component} from 'react';
class demoComponent extends from Component{
this.state={
isClicked:false,
buttonIcons:{
pending:{active_Icon:"../IconURL",Icon:"../IconURL"},
rejected:{active_Icon:"../IconURL",Icon:"../IconURL"},
accepted:{active_Icon:"../IconURL",Icon:"../IconURL"}
}
}
clickHandler = (event) =>{
this.setState(
{
isClicked:!this.state.isClicked // this is gonna toggle everytime you click //
}
);
}
render(){
return <div className="col-6 btn-group btn-group w-100">
<AuditMenuButtons clickhandler={this.clickHandler} buttonValue='Pending' buttonName='Inbox' isClicked={this.state.isClicked} buttonIcons={this.state.buttonIcons} changeFilterForButton={this.props.changeFilterForButton} icon={icon_inbox}/>
<AuditMenuButtons clickhandler={this.clickHandler} buttonValue='Rejected' buttonName='Rejected' isClicked={this.state.isClicked} buttonIcons={this.state.buttonIcons} changeFilterForButton={this.props.changeFilterForButton} icon={icon_rejected}/>
<AuditMenuButtons clickhandler={this.clickHandler} buttonValue='Accepted' buttonName='Accepted' isClicked={this.state.isClicked} buttonIcons={this.state.buttonIcons} changeFilterForButton={this.props.changeFilterForButton} icon={icon_accepted}/>
</div>
}
}
export default demoComponent;
推荐阅读
- r - 将 Chromote 与 Hayalbaz 一起使用?
- docker - 一段时间后,带有 Nginx 的 Docker 容器停止使用 ExitCode 255
- python - 来自美丽汤的 CSV 数据在所有内容前面显示 b 或 \n
- google-drive-api - 从 google drive url 以文件格式获取文件以上传 nodejs 后端
- r - 删除日期范围重叠的行
- excel - 查找第三个匹配项的 Excel 公式不起作用
- arrays - 无法获取数组令牌大小
- endpoint - 如何使用 Coinbase API 判断市场是上涨还是下跌一定百分比?
- jquery - 如何通过自动单击闪亮的链接自动重定向到闪亮的选项卡而不会被chrome阻止?
- angular - Angular,在控制台中防止“未定义不是评估对象...”