Javascript 带有React路由器4的默认路由

Javascript 带有React路由器4的默认路由,javascript,reactjs,routing,react-router,Javascript,Reactjs,Routing,React Router,fI当前在我的应用程序中定义了以下路由: / /selectSteps /steps /steps/alpha /steps/beta /steps/charlie 也可以像这样进行可视化: - (home) - selectSteps - steps - alpha - beta - charlie <Route path="/" exact component={Home} /> <Route pat

fI当前在我的应用程序中定义了以下路由:

/
/selectSteps
/steps
/steps/alpha
/steps/beta
/steps/charlie
也可以像这样进行可视化:

- (home)
    - selectSteps
    - steps
       - alpha
       - beta
       - charlie
  <Route path="/" exact component={Home} />
    <Route path="/select-steps" render={() => <StepSelectorContainer />} />
    <Route path="/steps" component={StepsContainer} />
我的根组件如下所示:

- (home)
    - selectSteps
    - steps
       - alpha
       - beta
       - charlie
  <Route path="/" exact component={Home} />
    <Route path="/select-steps" render={() => <StepSelectorContainer />} />
    <Route path="/steps" component={StepsContainer} />

我应该如何为此配置路由?理想情况下,点击
/steps
会重定向到第一个子路径。

实际上,这非常简单

使用
重定向组件到。。。嗯,重定向

<Redirect from="/steps" exact to="/steps/whatever" />

exact
prop保证您不会被从子路由重定向

编辑:毕竟,
重定向
确实支持
精确
(或
严格
)道具。无需换行
路线
。更新答案以反映这一点。

Pedr, 我想这会解决你的问题

<Route path="/" exact component={Home} />
<Route path="/select-steps" render={() => <StepSelectorContainer />} />
<Route path="/steps" component={StepsComponent} />

} />
然后在StepsComponent渲染方法中,可以执行此操作

<Switch>
{steps.map(step => (
    <Route
        path={fullPathForStep(step.uid)}
        key={shortid.generate()}
        render={() => <StepContainer step={step} />}
    />}
<Redirect from="/steps" exact to="/steps/alpha" />
</Switch>

{steps.map(步骤=>(
}
/>}
这样做的目的是呈现steps组件,因为路由以/steps开头。呈现之后,它将基于url呈现一个嵌套路由。如果url只是“/steps”,则它将重定向到此处列出的初始路由,在本例中为“/steps/alpa”通过呈现重定向。开关将使其仅呈现其中一条路由

Andreyco获得了重定向代码


我希望这能有所帮助。

谢谢。但这只适用于替换当前路由(和组件)。我需要容器组件
StepsContainer
,它是作为包装器呈现在子路由呈现的子组件周围的。