我的 Persistent Left Drawer 不会缩小右侧的内容,Material UI

Posted

技术标签:

【中文标题】我的 Persistent Left Drawer 不会缩小右侧的内容,Material UI【英文标题】:My Persistent Left Drawer doesn’t shrink the content at it’s right, Material UI 【发布时间】:2022-01-04 01:40:24 【问题描述】:

我正在尝试使用 React – Material UI 创建一个持久的左侧抽屉,并且我希望抽屉打开时右侧的内容会缩小

但这并没有发生,我认为是因为“开放”这个参数没有被识别:

我正在使用版本 5.1.1

为什么我可以这样做?

拉斐尔

【问题讨论】:

我将de MUI版本升级到5.2.1,错误消失了,但还是没有缩水 【参考方案1】:

检查您从@mui/material 导入的抽屉是否正确。

import Drawer from '@mui/material/Drawer';

【讨论】:

那里没问题...【参考方案2】:

我已经做到了。

从 Material UI 页面复制持久抽屉的代码时,抽屉和页面内容都在同一个组件中

我不是你的情况,很可能你会这样做:

const drawerWidth = 210;

// @ts-ignore
const Main = styled('main',  shouldForwardProp: (prop) => prop !== 'open' )(( theme, open ) => (
    flexGrow: 1,
    padding: theme.spacing(3),
    transition: theme.transitions.create('margin', 
        easing: theme.transitions.easing.sharp,
        duration: theme.transitions.duration.leavingScreen
    ),
    marginLeft: `$drawerWidth`,
    ...(open && 
        transition: theme.transitions.create('margin', 
            easing: theme.transitions.easing.easeOut,
            duration: theme.transitions.duration.enteringScreen
        ),
        marginLeft: 0
    )
));

const MainPage = () => 
    const [ drawerOpen, setDrawerOpen ] = React.useState(false);
    const [ marginLeftWhenDrawerOpens, setMarginLeftWhenDrawerOpens ] = useState(0);

    const handleDrawerOpen = () => 
        setDrawerOpen(true);
        setMarginLeftWhenDrawerOpens(drawerWidth);
    ;

    const handleDrawerClose = () => 
        setDrawerOpen(false);
        setMarginLeftWhenDrawerOpens(0);
    ;

    return (
        <React.Fragment>
            <PersistentDrawerLeft drawerOpen=drawerOpen closeDrawer=handleDrawerClose drawerWidth=drawerWidth />
            <Main
                // @ts-ignore
                open=drawerOpen
                sx= marginLeft: `$marginLeftWhenDrawerOpenspx` 
            >
                <Grid container direction="column">
                    <Grid item>
                        <MainPageHeader
                            openDrawer=handleDrawerOpen
                            marginLeftWhenDrawerOpens=marginLeftWhenDrawerOpens
                        />
                    </Grid>
                    <Grid item container>
                        <Grid item xs=1 />
                        <Content />
                        <Grid item xs=1 />
                    </Grid>
                    <Grid item>
                        <Footer />
                    </Grid>
                </Grid>
            </Main>
        </React.Fragment>
    );
;

当然,MainHeader会根据marginLeftWhenDrawerOpens来调整它的marginLeft

// @ts-ignore 在那里,因为我收到了一个错误,但事情仍然有效

拉斐尔

【讨论】:

以上是关于我的 Persistent Left Drawer 不会缩小右侧的内容,Material UI的主要内容,如果未能解决你的问题,请参考以下文章

AppBar 下方的 Flutter Drawer

CodeForces 707D Persistent Bookcase

在 Flutter 中更改 Drawer 小部件的顶部颜色

VuetifyJS - 滚动 v-navigation-drawer

Material-UI Drawer 在移动设备上不滚动

在 Antd React App 中重新创建类似 Sider/Drawer 的 Ant Design Pro