React路由器v4阻止匹配子路由

React路由器v4阻止匹配子路由

问题描述:

我遇到了React Router v4交换机组件的问题。我很惊讶,我找不到这个问题的相关线索。一个常见的交换机将是这样的:React路由器v4阻止匹配子路由

<Switch> 
    <Route path='/path1' component={Path1Component}/> 
    <Route path='/path2' component={Path2Component}/> 
    <Route exact path='/' component={Home}/> 
    <Route component={NotFound}/> 
</Switch> 

这意味着,当我是一个路径:“/”我自己的房子组件,在“/路径1”我得到一个Path1Component和路径“/ foobar的'我收到一个NotFound组件。这是完全好

但是,当我在'/ path1/foobar'路线我也得到Path1Component。这种行为在每种情况下都是不正确的 - 这次我不想为'/ path1'路由设置任何嵌套路由。 '/ path1/foobar'应该得到一个NotFound组件,任何字符串,'/'或'/ path1'之后都不应该返回NotFound组件。

这个问题的首选解决方案是什么?我可以为每条路径添加确切的内容,但是这不会使代码过度扩展吗?我觉得这应该是默认的,但事实并非如此。

即使在React Router v4文档上,如here。我看到这个问题 - 这里'/ will-match/foo'也会匹配。你怎么看?

有一个讨论here,而是使之短:它会破坏现有的代码。如果这种情况发生改变,如果你想匹配子路由而不做'path1/child1',你必须做exact={false}