javascript - 在 React 中单击元素时修改 className
问题描述
我在 ReactJS 中创建了一个菜单栏,它具有一些基本的路由功能。组件的 JSX 如下:
class TopBar extends Component {
state = {
menus: [{id:0,menu:"Home"}, {id:1,menu:"Contact"}, {id:2,menu:"About"}]
}
addClass = e => {
console.log("Addclass "+ e.target);
}
render() {
return (
<Router>
<div>
<nav class="navbar navbar-expand-lg">
<div class="row">
<div class="col-sm-12">
<div class="collapse navbar-collapse">
<ul class="navbar-nav mr-auto">
{this.state.menus.map((menu,index) =>
<li className="nav-item ng-star-inserted">
<a className={`nav-link ${'active'}`} id={"sample"+ menu.id} onClick={this.addClass} >
<Link to={menu.menu}> {menu.menu} </Link>
</a>
</li>
)}
</ul>
</div>
</div>
</div>
</nav>
<Route path="/home" exact component={
Home
} />
<Route path="/contact" exact component={
Contact
} />
<Route path="/about" exact component={
About
} />
</div>
</Router>
);
}
}
CSS:
.navbar .nav-link.active {
border-bottom: 3px solid #fdd92d;
}
当我单击特定菜单(主页/联系人/关于)时,我希望active
将类附加到该特定菜单。我添加了onClick
事件并尝试将id
属性传递给它。
但是id
在调试器中是空白的。
active
单击菜单后如何添加类名?
解决方案
你最好改用 react-router-dom 的NavLink
东西。
<NavLink to={menu.menu} activeClassName='active' className='nav-link'>
{menu.menu}
</NavLink>
推荐阅读
- rest - rest 和 Http 中“无状态”的含义
- angular - 如何使用角度从组件到模板选择选项按钮?
- cordova - Cordova:如何在启动时将应用程序方向锁定为横向而不是横向反转?
- database - 如果数据已更新,则阻止更新 MongoDB
- javascript - 如何发出 HTTP 请求将文件从 reactjs 上传到谷歌驱动器?
- gcc - 使用 gcc 编译时对“WinMain@16”错误的未定义引用
- node.js - 使用节点 js 验证巴西手机号码
- javascript - 如何提高 javascript 数组操作中嵌套循环的性能?
- xml - 将 XML 发布到 WebAPI
- css - 在可滚动父项的情况下,工具提示文本不可见