正如我所提到的,我有一个带布局的MUI主题提供程序,它包括仪表板、订单屏幕。。。
当用户点击"/"端点时,它应该返回登录屏幕,但布局会一直显示出来。
-App.js
<ThemeProvider theme={theme}>
<Router>
<Layout>
<Switch>
<Route exact path="/">
<Login />
</Route>
<Route path="/dashboard">
<Dashboard />
</Route>
<Route path="/orders">
<Orders />
</Route>
<Route path="/users">
<Users />
</Route>
<Route path="/employees">
<Employee />
</Route>
</Switch>
</Layout>
</Router>
</ThemeProvider>
);
-布局.js
AppBar、边栏等
<div style={{width:'100%'}}>
<div className={classes.toolbar}></div>
{children}
</div>
按原样,代码无条件地在Switch
之外呈现Layout
组件,因此无论当前匹配的路由如何,都会对其进行渲染。
如果希望Layout
组件仅在某些路由上渲染,请有条件地使用这些路由进行渲染。
例如,将Login
组件完全呈现在"/"
路径上,将其他所有组件都呈现到呈现Layout
和另一个Switch
的路由中。
<ThemeProvider theme={theme}>
<Router>
<Switch>
<Route exact path="/">
<Login />
</Route>
<Route path="/">
<Layout>
<Switch>
<Route path="/dashboard">
<Dashboard />
</Route>
<Route path="/orders">
<Orders />
</Route>
<Route path="/users">
<Users />
</Route>
<Route path="/employees">
<Employee />
</Route>
</Switch>
</Layout>
</Route>
</Switch>
</Router>
</ThemeProvider>