问题描述
调用URL / folders / xy后,我试图访问FolderDetail组件。我始终没有获得FolderDetail组件,而总是获得位于/ folders的Folders组件...请帮助。
import React from 'react';
import { browserRouter,Route,Switch } from 'react-router-dom';
function App() {
return (
<browserRouter>
<div className="App">
<Navigation />
<Switch>
<Route path="/" component={Home} exact />
<Route path="/folders" component={Folders} />
<Route path="/folders/:id" component={FolderDetail} />
<Route path="/login" component={Login} />
</Switch>
</div>
</browserRouter>
);
}
export default App;
解决方法
一个交换机采用第一个匹配的路由,因此您需要像这样重新排序路由(还添加exact
)
<Switch>
<Route exact path="/folders/:id" component={FolderDetail} />
<Route exact path="/folders" component={Folders} />
<Route exact path="/login" component={Login} />
<Route exact path="/" component={Home} exact />
</Switch>
始终将更具体的路线放在首位。
,您应该将exact
添加到所有Routes组件,这是有效的codesandbox:
const App = () => {
return (
<BrowserRouter>
<div className="App">
<Navigation />
<Switch>
<Route exact path="/" component={Home} />
<Route exact path="/folders" component={Folders} />
<Route exact path="/folders/:id" component={FolderDetail} />
</Switch>
</div>
</BrowserRouter>
);
};