reactjs - 从动态构建的侧边栏按钮列表中添加/删除活动类
问题描述
我正在为我的 react 项目构建引导侧边栏,其中包含动态生成的按钮列表。单击时我想将active
类添加到单击的按钮并从任何其他按钮中清除它(如果选择了一个)。
我阅读了有关classNames库的信息,但无法完成这项工作。以下是其中一组按钮的示例:
类名:
var btnClass = classnames({
btn: true,
'btn-link': true,
'nav-link': true,
'active': // not sure what to use here
});
按钮示例
<ul class="nav flex-column">
{ checkingAccounts.map((account) => {
return (
<li className="nav-item">
<button eventKey={account.id} type="button" className={btnClass} onClick={this.handleAccountSelect} value={account.id}>
{ account.account_name }
</button>
</li>
)
})}
</ul>
和我的状态和处理程序
this.state = {
data: [],
checkingAccounts: [],
savingsAccounts: [],
creditCardAccounts: [],
selectedAccount: null,
}
}
handleAccountSelect = (event) => {
console.log(event)
this.props.handleAccountSelect(event.target.value)
this.setState({
selectedAccount: event.target.value
})
}
解决方案
您需要将其btnClass
放在循环内,以便每个按钮更改,您可以与状态中的选定项目进行比较。
<ul class="nav flex-column">
{checkingAccounts.map((account) => {
var btnClass = classnames({
btn: true,
'btn-link': true,
'nav-link': true,
'active': state.selectedAccount === account.id // whatever value is .value
});
return (
<li className="nav-item">
<button eventKey={account.id} type="button" className={btnClass} onClick={this.handleAccountSelect} value={account.id}>
{ account.account_name }
</button>
</li>
)
})}
</ul>
推荐阅读
- android - React Native Alert.alert() 仅适用于 iOS 和 Android,不适用于 Web
- python-3.x - 在 Python 中将数字转换为二进制
- sql - 检查字符串是否仅在 Transact-SQL 中由字母或数字组成
- html - 在 django 中使用标志作为语言的选项
- python - 如何在 Python 代码中添加 1 级日志详细程度?
- java - Spring WebFlux - 为什么我必须等待 WebClient 响应?
- javascript - Javascript在for循环中返回对象嗨伙计
- amazon-web-services - 在 AWS Lambda 上使用 Python 从 S3 中的 AWS SES 邮件中提取电子邮件附件
- java - 填充对象数组时出现问题。结果始终为空
- php - “将 [name] 添加到可填充属性以允许对 [Illuminate\Foundation\Auth\User] 进行批量分配。”