【发布时间】:2022-01-18 20:20:30
【问题描述】:
我试图在悬停时设置ListItem 的样式,但问题是列表被映射以创建多个列表项。当我更改悬停样式时,它会更改悬停时所有列表项的样式。如何只针对一个元素?下面是代码。
当prop.icon 和ListItemText 悬停时,我正在尝试设置它们的样式。
Sidebar.js
var links = (
<List className={classes.list}>
{routes.map((prop, key) => {
if (prop.path === "/login") {
return;
}
return (
<NavLink
to={prop.layout + prop.path}
className={classes.item}
activeClassName="active"
key={key}
>
<ListItem button className={classes.itemLink} onMouseEnter={MouseEnter} onMouseLeave={MouseLeave}>
<prop.icon
className={classNames(classes.itemIcon)}
/>
<ListItemText
primary={prop.name}
className={classNames(classes.itemText)}
disableTypography={true}
/>
</ListItem>
</NavLink>
);
})}
</List>
);
MouseEnter & MouseLeave
const MouseEnter = (e) => {
setHovered(true);
}
const MouseLeave = (e) => {
setHovered(false);
}
【问题讨论】:
-
请发布 MouseEnter 和 mouseLeave 函数
-
你为什么不用css来做这个?
-
css 会是什么样子? IDK 当我需要定位映射数组中的一个元素时,CSS 将如何工作。
-
@AS10 在 CSS 中你只需要使用
:hover来引用。它将与您尝试使用 JS 实现的所有功能相同,但更简单。 -
@AS10 请接受答案以关闭此问题
标签: javascript css reactjs material-ui