【发布时间】:2021-03-29 15:40:53
【问题描述】:
我正在尝试使用材质 UI 和 ReactJS 制作折叠子列表,我已按照材质 UI 列表中的示例进行操作。 问题是当单击一个列表项展开其他列表项时,也会像下图一样展开:
这是代码:
return (
<List component="nav"
aria-labelledby="nested-list-subheader"
subheader={
<ListSubheader component="div" id="nested-list-subheader">
Nested List Items
</ListSubheader>
}>
{items.map((item, index, list) => (
<Fragment key={item.id}>
<ListItem button key={item.id} onClick={handleClick}>
<ListItemAvatar>
<Avatar>
<img className={classes.icon} src={`images/icon/${item.category || 'default'}.svg`}
alt=""/>
</Avatar>
</ListItemAvatar>
<ListItemText primary={item.name}/>
{open ? <ExpandLess/> : <ExpandMore/>}
</ListItem>
<Collapse in={open} timeout="auto" unmountOnExit>
<List component="div" disablePadding>
<ListItem button className={classes.nested}>
<ListItemIcon>
<LensIcon style={{color: changeColorStatus(item)}}/>
</ListItemIcon>
<ListItemText primary="Status"/>
</ListItem>
<ListItemSecondaryAction>
<IconButton onClick={(event) => onMenuClick(event.currentTarget, item.id)}>
<MoreVertIcon/>
</IconButton>
</ListItemSecondaryAction>
</List>
</Collapse>
{index < list.length - 1 ? <Divider/> : null}
</Fragment>
))}
</List>
);
}
const handleClick = () => {
setOpen(!open);
};
提前致谢。
【问题讨论】:
标签: reactjs react-hooks material-ui