- 此问题在此处已有答案**:
How do I render components with different layouts/elements using react-router-dom v6(2个答案)
2天前关闭。
作为我的路线Sidebar
和顶栏是渲染与Signup
和登录页面。
我想用一个单独的路径来呈现Signup
和登录页面,在那里侧边栏不应该呈现。侧边栏和Topbar
应该只用home和other组件呈现。
我已经使用react-router-dom
作为路线和主题的材质UI组件。
import { Route, Routes } from "react-router-dom";
import { useState } from "react";
import Home from "./pages/Home";
import Page1 from "./pages/page1";
import LogIn from './pages/LogIn'
import SignUp from './pages/SignUp'
import Sidebar from "./scenes/global/Sidebar"
import Topbar from "./scenes/global/Topbar"
import { CssBaseline, ThemeProvider } from "@mui/material";
import { ColorModeContext, useMode } from "./theme";
function App() {
const [theme, colorMode] = useMode();
const [isSidebar, setIsSidebar] = useState(true);
return (
<ColorModeContext.Provider value={colorMode}>
<ThemeProvider theme={theme}>
<CssBaseline />
<div className="app">
<Routes>
<Route path="/" element={<SignUp/>}/>
<Route path="/login" element={<LogIn/>}/>
</Routes>
<Sidebar isSidebar={isSidebar}/>
<main className="content">
<Topbar setIsSidebar={setIsSidebar}/>
<Routes>
<Route path="/home" element={<Home/>}/>
<Route path="/page1" element={<Page1/>}/>
</Routes>
</main>
</div>
</ThemeProvider>
</ColorModeContext.Provider>
)
}
export default App
3条答案
按热度按时间xmq68pz91#
你可以在每个页面组件中呈现侧边栏和顶栏。2这不仅可以解决你的问题,而且可以使你更容易地管理项目页面。
例如在Home.jsx中
yqlxgs2m2#
使用react router v6时,您可以使用Outlet
像这样更改您的App.js:
在TopBar.js中:
在边栏.js中:
vyswwuz23#