Javascript 带有React路由器4的默认路由
fI当前在我的应用程序中定义了以下路由: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
/
/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
,它是作为包装器呈现在子路由呈现的子组件周围的。