reactjs - 即使在单击其他链接后,属性“aria-current='page'” 和 class='active' 也不会从第一个 NavLink 中消失
问题描述
在我的 DOM 中,我的元素如下所示:
<nav>
<a aria-current="page" class="item_1 active" href="/">Home</a>
<a class="item_2" href="/about">About</a>
<a aria-current="page" class="item_3 active" href="/blog">Blog</a>
<a class="item_4" href="/contact">Contact</a>
</nav>
即使点击了第三个链接,第一个链接也没有改变它的属性和类。
假设我有菜单组件:
import React from 'react'
import { NavLink } from 'react-router-dom'
function Menu(props) {
const list = [{
item: 'Home',
itemLink: '/'
}, {
item: 'About',
itemLink: '/about'
}, {
item: 'Blog',
itemLink: '/blog'
}, {
item: 'Contact',
itemLink: '/contact'
}]
const menuItems = list.map((list, index) => {
return <NavLink className={`item_${index + 1}`} to={`${list.itemLink}`} key={index}> <span>{list.item}</span></NavLink >
})
return(
<nav className="navmenu">{menuItems}</nav>
)
}
export default Menu
和主要成分
import React, { Component } from 'react'
import Menu from './Menu'
import Home from './Home'
import About from './About'
import Contact from './Contact'
import Blog from './Blog'
import { BrowserRouter as Router, Switch, Route } from 'react-router-dom'
class Main extends Component {
render() {
return (
<Router>
<div>
<Menu />
<Switch>
<Route exact path='/' component={Home} />
<Route path='/about' component={About} />
<Route path='/blog' component={Blog} />
<Route path='/contact' component={Contact} />
</Switch>
</div>
</Router>
)
}
}
export default Main
如何在单击或点击后退按钮时创建当前链接,将属性 (aria-current="page" class="active") 仅设置为当前链接而不设置为兄弟姐妹?
解决方案
基于 ib @ravibagul91,解决方案将通过在 NavLink 中添加精确道具来揭示。
const menuItems = list.map((list, index) => {
return <NavLink className={`item_${index + 1}`} to={`${list.itemLink}`} key={index} exact> <span>{list.item}</span></NavLink >
})
推荐阅读
- java - StatusLogger 找到多个日志记录实现
- react-native - 在 iOS 和 Android 中使用相同代码但结果不同的 React Native 应用程序
- ios - 自定义后退按钮有多余的多余空间
- queue - 如何在 Websphere 应用服务器中启用或禁用队列
- python - 我可以在多处理池星图方法中传递队列对象吗
- c - hiredis 在主机名中使用用户名和密码失败
- google-calendar-api - Google 日历服务帐户和共享资源日历(例如房间):仅限忙时访问
- java - 我们可以序列化 java Socket 对象以通过 Kafka 队列发送吗
- sql - 如何将三个最相似但又有些不同的表合并为一张表?
- java - 在 ArrayList 中存储资源的路径