Я пытаюсь открыть ящик в файле «панель инструментов» из файла «Навбар». Как вы уже догадались, я хочу открыть ящик, который должен быть в файле панели инструментов из панели навигации, звучит достаточно просто, но я просто могу заставить его работать. Я пробовал несколько методов, один из работ сорта:
Имея функцию переключения и состояние выдвижного ящика в файле макета, поэтому структура работает следующим образом: Событие Click на панели навигации. js запускает переключение function in Layout -> Toggle функция в макете изменяет состояние boxOpen -> Состояние boxOpen передается в Dashboard. js через реквизиты, которые затем управляют состоянием открытия ящика. Единственным недостатком этого метода является то, что все анимации не работают (медленно показывает ящик внутрь и наружу и т. Д. c)
Так что я подумал, что мне нужно иметь состояние выдвижного ящика и работать непосредственно внутри файла Dashboard, но как мне получить кнопку на панели навигации. js для запуска функции на панели инструментов. js?
Надеюсь, я объяснил это достаточно хорошо, чтобы вы поняли, любая идея будет оценена! Если мне нужно объяснить еще кое-что, пожалуйста, дайте мне знать!
Редактируйте 1 без анимации, работающей
Макет. js (есть конечно больше маршрутов и т.д. c, но я удалил их, чтобы сделать очиститель файлов):
const Layout = () => {
const [dashBoardSideNavOpen, setDashBoardSideNavOpen] = React.useState(false);
const dashBoardSideNavToggle = () => {
setDashBoardSideNavOpen(!dashBoardSideNavOpen);
};
const dashBoardSideNavClose = () => {
setDashBoardSideNavOpen(false);
};
return (
<Router>
<NavBar
dashBoardSideNavToggle={dashBoardSideNavToggle}
/>
<Switch>
<Route
path="/dashboard"
component={props => (
<DashBoard
{...props}
dashBoardSideNavOpen={dashBoardSideNavOpen}
dashBoardSideNavToggle={dashBoardSideNavToggle}
dashBoardSideNavClose={dashBoardSideNavClose}
/>
)}
/>
</Switch>
</Router>
);
};
export default Layout
Navbar. js:
const NavBar = ({dashBoardSideNavToggle}) => {
return (
<Fragment>
<div className={classes.root}>
<AppBar className={classes.appBar}>
<Toolbar>
<Box style={{ flexGrow: 1 }}>
<IconButton color="inherit" onClick={dashBoardSideNavToggle}>
<MenuIcon />
</IconButton>
</Box>
<Typography variant="h4" style={{ flexGrow: 1 }}>
<Link component={RouterLink} to="/" color="inherit" underline="none">
Title
</Link>
</Typography>
<IconButton color="inherit" onClick={userSideNavToggle}>
<MenuIcon />
</IconButton>
</Toolbar>
</AppBar>
</div>
<div className={classes.offset} />
</Fragment>
);
};
DashBoard. js:
const DashBoard = ({dashBoardSideNavOpen, dashBoardSideNavToggle, dashBoardSideNavClose}) => {
return (
<Router>
<div className={classes.root}>
<Drawer
variant="temporary"
anchor={'left'}
open={dashBoardSideNavOpen}
onOpen={dashBoardSideNavToggle}
onClose={dashBoardSideNavToggle}
classes={{
paper: classes.drawerPaper
}}
ModalProps={{
keepMounted: true
}}
>
{drawerContent}
</Drawer>
<Fragment>
<Switch>
<Route
exact
path={'/dashboard/overview'}
component={Overview}
/>
</Switch>
</Fragment>
</div>
</Router>
);
};