reactjs - Material-ui 响应式抽屉单击列表项并仅在移动抽屉上切换(关闭)抽屉
问题描述
示例:https ://codesandbox.io/s/k2o6jz5o87
响应式抽屉如何单击列表项并仅在移动抽屉上切换(关闭)抽屉。
我试过了
<ListItem
button
key={text}
// i added this line
onClick={this.handleDrawerToggle}
>
<ListItemIcon>
{index % 2 === 0 ? <InboxIcon /> : <MailIcon />}
</ListItemIcon>
<ListItemText primary={text} />
</ListItem>
但它也会在桌面视点上切换抽屉。
解决方案
我认为你可以检查窗口的当前宽度,如果宽度 < 768px(移动),你可以禁用抽屉
class WindowWidth extends React.Component {
constructor() {
super();
this.state = {
displayDrawer: true
};
this.updateDimensions = this.updateDimensions.bind(this);
}
componentDidMount() {
console.log(this.state.width);
window.addEventListener("resize", this.updateDimensions);
}
updateDimensions() {
this.setState({
displayDrawer: window.innerWidth < 768
});
}
render() {
const {displayDrawer} = this.state;
return (
<ListItem
button
key={text}
// i added this line
onClick={displayDrawer ? this.handleDrawerToggle : function(){}}
>
<ListItemIcon>
{index % 2 === 0 ? <InboxIcon /> : <MailIcon />}
</ListItemIcon>
<ListItemText primary={text} />
</ListItem>
);
}
componentWillUnmount() {
window.removeEventListener("resize", this.updateDimensions);
}
}
推荐阅读
- php - Laravel 迁移数据库/和供应商/中的重复类名
- css - Angular Material - 单选按钮标签字体大小太大
- regex - 将字符串与正则表达式 scala 匹配
- javascript - 如何获得单位圆上2个角度之间的顺时针角度
- post - POST 使用 HttpClient 来自内容类型 application/x-www-form-urlencoded 使用 grant_type 和 scope
- apache-kafka - Kafka Connect Cassandra 源未获取 timeuuid 字段的数据
- php - 使用 Laravel 5.7 电子邮件验证从代理网络中的服务器发送验证电子邮件
- permissions - 如果 Windows 10 拒绝权限,我如何取消从文件夹中读取只读选项?
- hyperledger - 共识算法在超级账本区块链网络中的作用是什么?它是如何工作的?
- c# - 循环遍历数据表中特定列的值