路由呈现错误的组件,ReactJS
Route renders wrong component, ReactJS
我正在尝试在调用 url /folders/xy 后访问 FolderDetail 组件。我总是获取位于 /folders 中的 Folders 组件,而不是获取 FolderDetail 组件...请帮忙。
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
添加到所有路由组件,这是有效的 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>
);
};
我正在尝试在调用 url /folders/xy 后访问 FolderDetail 组件。我总是获取位于 /folders 中的 Folders 组件,而不是获取 FolderDetail 组件...请帮忙。
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
添加到所有路由组件,这是有效的 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>
);
};