Igo*_*nak 5 reactjs material-ui
我想在顶部应用程序栏下方放置一个顶部抽屉以用于导航目的。根据API文档,当variant=“temporary”时,Drawer具有Modal组件的所有属性。属性“disablePortal”应该会导致所需的行为,但它不起作用:
子组件将位于父组件的 DOM 层次结构下。
到目前为止我尝试过的:
我不想要什么:
https://mui.com/material-ui/api/drawer/
最小工作示例:
https://codesandbox.io/s/stupefied-cache-7y6qmv
import { AppBar, Box, Drawer, IconButton, Toolbar } from "@mui/material";
import MenuIcon from "@mui/icons-material/Menu";
import { useState } from "react";
export default function App() {
const [showNavigation, setShowNavigation] = useState(false);
return (
<Box>
<AppBar position="static">
<Toolbar>
<IconButton
size="large"
edge="start"
aria-label="menu"
onClick={() => setShowNavigation((prev) => !prev)}
>
<MenuIcon />
</IconButton>
</Toolbar>
</AppBar>
<Drawer
anchor="top"
open={showNavigation}
onClose={() => setShowNavigation(false)}
disablePortal
>
Test
</Drawer>
</Box>
);
}
Run Code Online (Sandbox Code Playgroud)
我尝试了这个并且它有效:
import { AppBar, Box, Drawer, IconButton, Toolbar } from "@mui/material";
import MenuIcon from "@mui/icons-material/Menu";
import { makeStyles } from "@mui/styles";
import { useState } from "react";
const useStyles = makeStyles({
root: {
position: "relative !important",
"& .MuiBackdrop-root": {
position: "relative !important",
height: "100vh"
}
},
paper: {
position: "absolute !important"
}
});
export default function App() {
const [showNavigation, setShowNavigation] = useState(false);
const classes = useStyles();
return (
<Box>
<AppBar position="static">
<Toolbar>
<IconButton
size="large"
edge="start"
aria-label="menu"
onClick={() => setShowNavigation((prev) => !prev)}
>
<MenuIcon />
</IconButton>
</Toolbar>
</AppBar>
<Drawer
anchor="top"
open={showNavigation}
onClose={() => setShowNavigation(false)}
disablePortal
classes={{
paper: classes.paper,
root: classes.root,
}}
>
Test
</Drawer>
</Box>
);
}
Run Code Online (Sandbox Code Playgroud)
沙盒演示:https://codesandbox.io/s/mui-top-drawer-disableportal-bug-forked-ic8ql9? file=/src/App.js
| 归档时间: |
|
| 查看次数: |
3304 次 |
| 最近记录: |