我遇到了React Router v4 Switch组件的问题。我很惊讶我找不到这个问题的相关主题。常见的Switch看起来像这样:
<Switch>
<Route path='/path1' component={Path1Component}/>
<Route path='/path2' component={Path2Component}/>
<Route exact path='/' component={Home}/>
<Route component={NotFound}/>
</Switch>
这意味着当我走上一条道路时:&#39; /&#39;我得到一个Home组件,在&#39; / path1&#39;我得到一个Path1Component并在路径&#39; / foobar&#39;我得到一个NotFound组件。这非常好
然而,当我在&#39; / path1 / foobar&#39; route我也得到了Path1Component。这种行为在每种情况下都不正确 - 这次我不希望任何嵌套路由用于&#39; / path1&#39;路线。 &#39; / PATH1 / foobar的&#39;应该得到一个NotFound组件,任何字符串,&#39; /&#39;或没有在&#39; / path1&#39;应该返回NotFound组件。
这个问题的首选解决方案是什么?我可以添加精确到每个路径,但不会过度代码?我觉得这应该是默认的,但事实并非如此。
即使在React Router v4文档上,例如here。我看到了这个问题 - 这里&#39; /将匹配/ foo&#39;也会匹配。你的想法是什么?
答案 0 :(得分:0)
有一个讨论here,但为了简短起见:它会破坏现有代码。如果要更改,如果您想要匹配子路线而不执行&#39; path1 / child1&#39;,则必须执行exact={false}
。