我想在单个路由文件中实现嵌套路由和侧边栏路由的组合。我希望组件像这样渲染。
"/" --- Registration page
"/login" ---- Login Page
"/application" --- Application Page
"/dashboard" --- Dashboard page with Sidebar and Application components
"/dashboard/application" --- Dashboard page with Sidebar and Application components
"/dashboard/user" --- Dashboard page with Sidebar and User components
我的路线设置如下
<Switch>
<Route path="/" component={withAuth(Registration)} />
<Route path="/login" component={withAuth(Login)} />
<Route path={'/dashboard'} component={withAuth(Dashboard)}/>
</Switch>
在仪表板页面内,我基本上实现了react-router-dom网站的侧边栏示例。
它工作正常,但是我想把所有的路由放在一个文件中。
像这样的
<Switch>
<Route path="/" component={withAuth(Registration)} />
<Route path="/login" component={withAuth(Login)} />
<Route path={'/dashboard'} component={withAuth(Dashboard)} children={[Sidebar, Application]}/>
<Route path="/dashboard/application" component={withAuth(Dashboard)} children={[Sidebar, Application]}/>
<Route path="/dashboard/user" component={withAuth(Dashboard)} children={[Sidebar, User]}/>
</Switch>
上面的代码是虚构的代码,但它是为了给我一个想法,我试图实现。我试图从一个类似的问题解决,但它不适合我。
如何将所有路由放在一个文件中,并在react router dom v4/v5中处理边栏路由和嵌套路由?
我已经创建了一个示例代码沙盒,请尝试这个示例。
虽然我认为将所有路由放在一个文件中已经成为一种反模式,但我认为您可以实现与所需内容足够接近的功能—特别是,将所有路由放在同一个文件中。
主要技巧是像普通开关一样使用开关。Switch
中的最后一种情况成为默认情况(或路由)。
你还需要使用精确,因为没有它,它将匹配URL/
每次。第二个Switch
内部的InternalRoutes
也是如此。如果您不包含确切的
,它将每次都匹配/dashboard
,并且永远不会访问/dashboard/Application
或dashboard/user
。您仍然需要将Routes
组件包装在一个Browser路由器
组件中。
import React from 'react';
import { Switch, Route } from 'react-router-dom';
const Routes = props => {
return (
<Switch>
<Route exact path="/" component={withAuth(Registration)} />
<Route exact path="/login" component={withAuth(Login)} />
<Route component={withAuth(InternalRoutes)} />
</Switch>
);
};
const InternalRoutes = props => {
return (
<Switch>
<Route exact path="/dashboard" component={withAuth(Dashboard)} children={[Sidebar, Application]}/>
<Route exact path="/dashboard/application" component={withAuth(Dashboard)} children={[Sidebar, Application]}/>
<Route exact path="/dashboard/user" component={withAuth(Dashboard)} children={[Sidebar, User]}/>
<Route component={NotFoundComponent} />
);
};
const NotFoundComponent = props => {
return <div>URL Not Found</div>;
};
export default Routes;
问题内容: 我目前正在使用React Router v4来嵌套路由。 最接近的示例是React-Router v4文档中的route配置 。 我想将我的应用分为2个不同的部分。 前端和管理区域。 我在想这样的事情: 前端的布局和样式与管理区域不同。因此,在首页中,回家的路线大约应该是子路线。 / home 应该呈现在Frontpage组件中, / admin / home 应该呈现在Backend
路由和侧边栏是组织起一个后台应用的关键骨架。 本项目侧边栏和路由是绑定在一起的,所以你只有在 @/router/index.js 下面配置对应的路由,侧边栏就能动态的生成了。大大减轻了手动重复编辑侧边栏的工作量。当然这样就需要在配置路由的时候遵循一些约定的规则。 配置项 首先我们了解一下本项目配置路由时提供了哪些配置项。 // 当设置 true 的时候该路由不会在侧边栏出现 如401,login等
我需要多个嵌套路由 我用的是react-router-dom的v4 我有我的 我需要组件渲染成这样 Home组件包含Page1、Page2和Page3组件共有的标题组件,但不存在于Login和About中。 我的js代码是这样读的 我希望登录组件只显示在 /login当我请求 /page1、 /page2、 /page3时,它们应该分别包含主页组件和该页面的内容。 取而代之的是呈现的登录组件,在该
我在想这样的事情: 前台有一个不同的布局和风格与管理区域。所以在frontpage中的路由是home、about等等,其中一个应该是子路由。 /home应该呈现到Frontpage组件中,而/admin/home应该呈现在后端组件中。 最终解决方案: 这是我现在使用的最终解决方案。这个例子也像传统的404页面一样有一个全局错误组件。
问题内容: 我正在React-Router中设置一些嵌套路由(我正在使用v0.11.6),但是每当我尝试访问其中一个嵌套路由时,都会触发父路由。 我的路线如下所示: 如果我将路线折叠起来,它看起来像: 它工作正常。之所以要嵌套,是因为我将在“仪表盘”下有多个子代,并希望它们在URL中都带有前缀。 问题答案: 配置与路由无关(尽管有名称),而是与路径驱动的布局有关。 因此,使用此配置: 就是说要嵌入
问题内容: 我的目标是让http:// mydomain / route1 渲染React组件Component1和http:// mydomain / route2 渲染Component2。因此,我认为编写如下的路由是很自然的: http:// mydomain / route1可以正常工作,但http:// mydomain / route2却呈现Component1。 然后,我阅读了此问题