【发布时间】:2022-01-02 11:19:02
【问题描述】:
我正在使用react-router-dom v6。我希望在没有Sidebar 和Topbar 组件的情况下呈现我的Login 页面。怎么做?
function App() {
return (
<Router>
<Container>
<Sidebar />
<Content>
<Topbar />
<MainContent>
<Routes>
<Route path="/" element={<Home />} />
<Route path="/users" element={<UserList />} />
<Route path="/users/:id" element={<User />} />
<Route path="/newUser" element={<NewUser />} />
<Route path="/products" element={<ProductList />} />
<Route path="/products/:id" element={<Product />} />
<Route path="/newProduct" element={<NewProduct />} />
<Route path="/login" element={<Login />} />
</Routes>
</MainContent>
</Content>
</Container>
</Router>
);
}
我不希望我的登录页面在 MainContent 内呈现,而是在没有 Sidebar 和 Topbar 的情况下占据整个页面。
我尝试将Routes 移到上方并在侧边栏上方登录route,但出现错误Error: [Sidebar] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>
【问题讨论】:
-
最好创建自己的自定义路由组件来处理布局组件和侧边栏/导航栏等内容的呈现。创建您自己的
Route组件,该组件仅呈现包装 react-router 路由的容器内容,然后为他们在登录时可以看到的路由创建类似于AuthRoute的组件,该组件呈现容器内容以及侧边栏/导航栏/随便。然后你可以只拥有<Route path="/login" element={<Login />} />Route 是你的自定义路由,<AuthRoute path="/users" element={<UserList />} />是你的自定义路由
标签: javascript reactjs routes react-router react-router-dom