【发布时间】:2021-11-15 05:41:22
【问题描述】:
使用 React Router 和 Material UI,我正在尝试根据当前 URL 路径设置导航项选择状态。如果用户来到一个特定的页面,它应该在侧边栏中设置相应链接的选中状态。
这是当前设置,但不确定我缺少什么属性来使用 React Router 根据 URL 路径设置活动状态
数据导航
"navigation":[
{
"label":"Introduction",
"path": "/"
},
{
"label":"Page Two",
"path": "pagetwo"
}
]
import {BrowserRouter as Router, Route, Link, Switch} from 'react-router-dom';
const [selectedIndex, setSelectedIndex] = useState(0);
const handleListItemClick = (event, index) => {
setSelectedIndex(index);
};
{data && data.navigation.map((item, i) =>
<Link key={i} to={`${item.path}`} className={classes.link}>
<ListItem button selected={selectedIndex === i} onClick={(event) => handleListItemClick(event, i)}>
<ListItemText className={classes.navLink}>{item.label}</ListItemText>
</ListItem>
</Link>
)}
【问题讨论】:
-
点击时
handleListItemClick中index的值是多少?代码看起来不错。 -
您想在哪里使用活动布尔值?您可以使用 NavLink 获取活动道具。
-
@jean182 布尔值可以设置一个当前用于设置所选导航链接样式的类。
-
@SanishJoseph - 索引是从
data.navigation.map中提取的 -
如果你只是想设置活动链接的一些样式,你为什么不试试 NavLink 呢?它有一个 ActiveClass 和你可以设置的活动样式属性。
标签: reactjs react-router react-router-dom