reactjs - 使用 Material-UI Drawer 添加可折叠功能
问题描述
我能够设置抽屉在我的应用程序中工作。我发现默认情况下缺少的一项功能是可折叠选项,其中部分是嵌套的。一个例子是邮件,它会有inbox, sent, outbox,
等。
我希望它看起来像这样:
Mail
Inbox
Sent
Outbox
我怎样才能做到这一点?该文件在演示中共享。
import React from 'react';
import { ListItem, ListItemIcon, ListItemText } from 'material-ui/List';
import InboxIcon from '@material-ui/icons/MoveToInbox';
import DraftsIcon from '@material-ui/icons/Drafts';
import StarIcon from '@material-ui/icons/Star';
import SendIcon from '@material-ui/icons/Send';
import MailIcon from '@material-ui/icons/Mail';
import DeleteIcon from '@material-ui/icons/Delete';
import ReportIcon from '@material-ui/icons/Report';
export const mailFolderListItems = (
<div>
<ListItem button>
<ListItemIcon>
<InboxIcon />
</ListItemIcon>
<ListItemText primary="Inbox" />
</ListItem>
<ListItem button>
<ListItemIcon>
<StarIcon />
</ListItemIcon>
<ListItemText primary="Starred" />
</ListItem>
<ListItem button>
<ListItemIcon>
<SendIcon />
</ListItemIcon>
<ListItemText primary="Send mail" />
</ListItem>
<ListItem button>
<ListItemIcon>
<DraftsIcon />
</ListItemIcon>
<ListItemText primary="Drafts" />
</ListItem>
</div>
);
export const otherMailFolderListItems = (
<div>
<ListItem button>
<ListItemIcon>
<MailIcon />
</ListItemIcon>
<ListItemText primary="All mail" />
</ListItem>
<ListItem button>
<ListItemIcon>
<DeleteIcon />
</ListItemIcon>
<ListItemText primary="Trash" />
</ListItem>
<ListItem button>
<ListItemIcon>
<ReportIcon />
</ListItemIcon>
<ListItemText primary="Spam" />
</ListItem>
</div>
);
//
解决方案
看“嵌套列表”演示:https ://material-ui.com/demos/lists/#nested-list
// ...
import Collapse from '@material-ui/core/Collapse';
// ...
class NestedList extends React.Component {
state = { open: true };
handleClick = () => {
this.setState({ open: !this.state.open });
};
render() {
const { classes } = this.props;
return (
<div className={classes.root}>
<List
component="nav"
subheader={<ListSubheader component="div">Nested List Items</ListSubheader>}
>
{/* ... */}
<ListItem button onClick={this.handleClick}>
<ListItemIcon>
<InboxIcon />
</ListItemIcon>
<ListItemText inset primary="Inbox" />
{this.state.open ? <ExpandLess /> : <ExpandMore />}
</ListItem>
<Collapse in={this.state.open} timeout="auto" unmountOnExit>
<List component="div" disablePadding>
<ListItem button className={classes.nested}>
<ListItemIcon>
<StarBorder />
</ListItemIcon>
<ListItemText inset primary="Starred" />
</ListItem>
</List>
</Collapse>
</List>
</div>
);
}
}
推荐阅读
- c# - 如何在 NUnit 中使用自定义 CultureInfo?
- mysql - 如何在mysql中检查日期是否在该月的10号之前?
- hadoop - 在 Oozie EMR 中安装 ExtJS
- swift - 我需要帮助 Swift 的功能
- python - python parquet install 在 macos 上使用 snappy 和 thiftpy 失败
- java - 释放
在 JNI 调用期间,ArrayElements 实际上没有从堆中释放内存? - c++ - 使用比非异步方法慢的 std::async 来填充向量
- angular - 表单相关字段反应表单Angular
- javascript - JavaScript:如何在继续下一行之前等待函数结束?
- sql - 根据不同的值查询多张表,让一张表的行变成一列?