我有以下路线:

<Switch>
  <Route path='/:profileType/:profileId' component={Profile}/>
  <Route path='/about/:aboutThing' component={AboutThing}/>
</Switch>


当我尝试转到/about/:aboutThing时-它被认为是{Profile}路线。这是有道理的,因为从技术上讲:profileType可以是任何字符串,因此任何嵌套路由都将被识别为Profile

我想知道是否可以在不更改其路径的情况下渲染{AboutThing}。从技术上讲,/about应该是该路由的保留字。我试着做:

<Route exact path='/about/:aboutThing' component={AboutThing}/>

但这也不起作用。尝试不必在该路径中添加额外的字符串以使其工作。有什么想法/想法吗?

最佳答案

答案很简单,Switch在第一个匹配的路线后停止,因此您可以像

<Switch>
  <Route path='/about/:aboutThing' component={AboutThing}/>
  <Route path='/:profileType/:profileId' component={Profile}/>
</Switch>

关于javascript - React Router 4嵌套路由冲突,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47441163/

10-09 16:54