reactjs - material-ui Drawer listitem 显示活动项目
问题描述
我想在我的抽屉中突出显示所选项目。以下是我的代码
<Link to ="/#" style={{textDecoration:'none'}}>
<ListItem button selected={selectedIndex === 0} onClick={(event) => handleListItemClick(event, 0)} >
<ListItemIcon>
<HomeIcon color="secondary"/>
</ListItemIcon>
<ListItemText primary="Home" />
</ListItem>
</Link>
<Link to ="/movies" style={{textDecoration:'none'}}>
<ListItem button selected={selectedIndex === 1} onClick={(event) => handleListItemClick(event, 1)}>
<ListItemIcon>
<MovieFilterIcon />
</ListItemIcon>
<ListItemText primary="Movies" />
</ListItem>
</Link>
以下是我为抽屉调用的功能
const [selectedIndex, setSelectedIndex] = React.useState(1);
const handleListItemClick = (event, index) => {
setSelectedIndex(index);
};
我想要的是当我单击电影时它应该转到电影和电影列表项应该显示为活动。 我愿意接受建议
解决方案
selectedIndex
当导航到新页面时,您可能面临的问题是重置为默认状态(在您的情况下为 1)。
selectedIndex
最简单的解决方法是添加一个 useEffect 函数来设置客户端挂载时的正确值。切换浏览器的 URL 以确定要设置的值:
useEffect(() => {
switch (window.location.pathname) {
case "/":
setSelectedIndex(0)
break
case "/movies":
setSelectedIndex(1)
break
default:
break
}
}, [])
这是一个与您的设置类似的CodeSandbox ,因此您可以详细查看所有内容
推荐阅读
- c# - 替换 AuthenticationHandler 进行集成测试
- c# - 尝试在本地驱动器上打开与数据库的 SQL 连接会导致 System.Data.SqlClient.SqlException
- javascript - 为什么我会收到这些未定义的值?
- django - 将 .git 文件夹添加到 Github 是一种好习惯吗?
- ffmpeg - 将 AVI 转码为 DNxHD mov – 仅输出视频的前几秒
- javascript - 覆盖javascript中的全局变量
- callback - 是否可以使用回调来访问 Julia 的微分方程集合问题中的单个轨迹?
- javascript - Apiv2Error:无法在该用户名下签署清单
- rust - 如何遍历(巨大的)gzip 压缩文件的行?
- python - Python:标准化矩阵