2017-10-19 278 views
0

我遇到了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'也會匹配。你怎麼看?

回答

0

有一個討論here,而是使之短:它會破壞現有的代碼。如果這種情況發生改變,如果你想匹配子路由而不做'path1/child1',你必須做exact={false}