我有这个代码:
<Drawer
docked = {false}
width = {330}
open = {this.state.drawerOpen}
onRequestChange = {(drawerOpen) => this.setState({drawerOpen})}
>
<MenuItem primaryText="Inicio" onTouchTap = {this.drawerOpened} containerElement = {<Link to="/administrador/inicio"/>}/>
<MenuItem primaryText="Nueva Incidencia" onTouchTap = {this.drawerOpened} containerElement = {<Link to="/administrador/nueva_incidencia"/>}/>
<MenuItem primaryText="Incidencias Recibidas" onTouchTap = {this.drawerOpened} containerElement = {<Link to="/administrador/incidencias_recibidas"/>}/>
<MenuItem primaryText="Informes" /*onTouchTap = {() => this.currentPages('Informes')}*/onTouchTap = {this.drawerOpened} containerElement = {<Link to="/administrador/informes"/>}/>
</Drawer>
我希望当我点击一个菜单项,它设置为'活动'(如在引导),与背景浅灰色和类似的风格。我怎么能做到这一点?问题是由于React路由器太,它卸载组件菜单和重新渲染它,所以状态不可用。
谢谢你。
5条答案
按热度按时间djmepvbi1#
在最新版本的Material UI中(当然在v4中),您可以使用
selected
属性,例如这是我的<ListItemLink>
组件,我使用ListItem组件,但也可以使用MenuItem。如果您想在某个时候自定义默认的选定样式,只需在创建主题时覆盖它即可:
wtzytmuj2#
以下是我的解决方法:
定义函数:
isActive =(值)=〉(位置.路径名===值?'活动':'')
现在你只是缺少了'active'的css样式。
vwhgwdsa3#
在MenuItem周围创建一个 Package 器组件并接受style属性,然后将其应用于MenuItem,这怎么样?
这可能进一步有助于:Toggle background color of list on click react.js
vsdwdz234#
@jpnazar答案几乎是正确的。但是,containerElement属性不再起作用。现在可以使用上面的代码来指定链接。
检查. https://github.com/mui-org/material-ui/issues/204上的问题
bbmckpt75#
我不确定材质UI是否已经有一个参数可以用来设置活动状态,但是我找到了这个变通方法,它的工作原理类似于charm
<ListItem key={item} sx={{ display: 'block', color: '#9A77CF', ...(window.location.pathname === "/selected pathname" && { backgroundColor: "#9A77CF", color: "#FFF", stroke: "#FFF"})}} >