reactjs - 如何通过下拉链接在 React 上使用 NavLink-activeStyle
问题描述
我在调整 bootstrap 4 导航栏以做出反应时遇到问题。我有以下代码:
<li className="nav-item">
<NavLink className="nav-link" to="/home" activeStyle={{ color: 'black' }}>Home</NavLink>
</li>
<li className="nav-item dropdown">
<a className="nav-link dropdown-toggle" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Subjects
</a>
<div className="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdown">
<NavLink className="dropdown-item" to="/subjectA">Subject A</NavLink>
<NavLink className="dropdown-item" to="/subjectB">Subject B</NavLink>
<NavLink className="dropdown-item" to="/subjectC">Subject C</NavLink>
</div>
</li>
<li className="nav-item">
<NavLink className="nav-link" to="/about" activeStyle={{ color: 'black' }}>About</NavLink>
</li>
我希望选择主题时“主题”变为黑色。我知道我可以使用单击事件,但我希望它在刷新页面时也保持黑色。这是由于 NavLink 的 activeStyle 而在其他元素上发生的情况,但似乎我不能在“主题”元素上以相同的方式使用它。
知道我该怎么做吗?
解决方案
我认为你可以这样做:
const activeStyle = { color: "#000000" };
<li className="nav-item">
<NavLink className="nav-link" to="/home" activeStyle={activeStyle} exact>Home</NavLink>
</li>
<li className="nav-item dropdown">
<a className="nav-link dropdown-toggle" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Subjects
</a>
<div className="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdown">
<NavLink className="dropdown-item" to="/subjectA" activeStyle={activeStyle}>Subject A</NavLink>
<NavLink className="dropdown-item" to="/subjectB" activeStyle={activeStyle}>Subject B</NavLink>
<NavLink className="dropdown-item" to="/subjectC" activeStyle={activeStyle}>Subject C</NavLink>
</div>
</li>
<li className="nav-item">
<NavLink className="nav-link" to="/about" activeStyle={activeStyle}>About</NavLink>
</li>
- activeStyle 变量只是帮助你不要重复相同的字符串
- "/home" 上的第一个 "exact" 字符串将确保只有确切的路径才能获得您想要的颜色,因为您的所有路径都彼此非常不同,您可以跳过它,这只是在您使用例如 "/ “这也是其他路线的一部分。
- 您的代码中唯一真正重要的缺失部分是 /subjectX 路由上的 activeStyle={activeStyle} 部分。
推荐阅读
- javascript - 如何通过单击选项卡本身以外的其他内容来切换 VueJS Vuetify 中的选项卡
- javascript - 执行操作时禁用 ag-grid 行选择?
- regex - 是否有一个正则表达式可以在一组行中搜索并替换该组中的一行并将其他单词保留在那里
- core-location - iOS 12 beta 4 CoreLocation 从后台启动
- reactjs - 没有及时加载 AJAX 请求的道具
- r - 为什么 runif() 的唯一值比 rnorm() 少?
- android - Firebase MLKit 条码扫描器导致 SIGSEGV 崩溃
- sql - Sql View:具有动态日期的列标题
- bitbucket - Artifactory Bitbucket 大型机集成
- c++ - 尝试实现 std::tie 和 std::tuple 的小版本