我在React-Router中设置了一些嵌套路由(v0.11.6是我正在反对的)但是每当我尝试访问其中一个嵌套路由时,它就会触发父路由 .
我的路线看起来像这样:
<Route handler={App}>
<Route name="home" path="/" handler={availableRoutes.Splash} />
<DefaultRoute handler={availableRoutes.Splash} />
<Route name="dashboard" handler={availableRoutes.Dashboard}>
<Route name="dashboard-child" handler={availableRoutes.DashboardChild} />
</Route>
<NotFoundRoute handler={NotFound} />
</Route>
如果我将路线折叠起来,它看起来像:
<Route handler={App}>
<Route name="home" path="/" handler={availableRoutes.Splash} />
<DefaultRoute handler={availableRoutes.Splash} />
<Route name="dashboard" handler={availableRoutes.Dashboard} />
<Route name="dashboard-child" path="/dashboard/dashboard-child" handler={availableRoutes.DashboardChild} />
<NotFoundRoute handler={NotFound} />
</Route>
它工作正常 . 我嵌套的原因是因为我在"dashboard"下会有多个子节点,并希望它们都在URL中以 dashboard
为前缀 .
3 回答
配置不是关于路由(尽管名称),而是关于路径驱动的布局 .
所以,有了这个配置:
据说
dashboard-child
将被嵌入dashboard
中 . 这是如何工作的,如果dashboard
有这样的事情:和
dashboard-child
有:然后对于路径
dashboard
,由于没有匹配的路径,没有嵌入的子节点,导致:并且对于路径
dashboard/dashboard-child
,嵌入的子级具有匹配的路径,从而导致:这里's an update to @bjfletcher'的答案为react-router 1.0.0 . 正如_1047640中所述:
而不是
<div><h1>Dashboard</h1><RouteHandler /></div>
你会用:
<div><h1>Dashboard</h1>{this.props.children}</div>
我有类似的问题 . 我认为以下代码段可能适合您: