![](/img/trans.png)
[英]display component across all paths except some in react-router-dom v6
[英]having multiple paths to the same component in react-router-dom v6
我正在尝试在 react router v6 中使用多个路径/路由来呈现相同的组件
使用以前版本的 react router dom 我可以这样做并且它会起作用:
<Route exact path={["/", "/home"]}>
<Home />
</Route>
<Route exact path={"/" | "/home"}>
<Home />
</Route>
现在使用 v6 我正在尝试同样的事情,但它不起作用
<Route exact path={["/","/home"]} element={<Homepage />} />
我应该如何解决这个问题 go? 到底是什么改变了它不起作用?
我进行路由的 App.js 的完整代码
import React from 'react';
import { BrowserRouter as Router, Routes, Route, Link } from 'react-router-dom'
import Navbar from './components/Navbar';
import Footer from './components/Footer';
import Contact from './components/Contact';
import Homepage from './components/Homepage';
import Projects from './components/Projects'
function App() {
return (<Router>
<Navbar />
<Routes>
<Route exact path={["/","/home"]} element={<Homepage />} />
<Route exact path="/contact" element={<Contact/>} />
<Route exact path="/projects" element={<Projects />} />
</Routes>
<Footer />
</Router>);
}
export default App;
正如公认的答案所暗示的那样重复代码可能不是一个好主意,当对组件的调用发生变化时很容易中断。
只需 map 在阵列上创建路由:
{["/", "/home"].map((path, index) => {
return (
<Route path={path} element={
<PageWrapper>
<Home />
</PageWrapper>
}
key={index}
/>
);
})}
另一种选择是仅使用导航并将它们作为某些<Routes />
的同级
我如何使用它的要点:
import React from 'react';
import { Route, Routes, useRoutes } from 'react-router-dom';
import Nav from './components/common/nav';
export const App: React.FC = () => {
const element = useRoutes([
{ path: '/', element: <Nav /> },
{ path: '/equipment', element: <Nav /> },
{ path: '/client-area/*', element: <Nav /> },
]);
return (
<main>
{element}
<Routes>
<Route />
<Route />
<Route />
{/* Your routes here */}
</Routes>
</main>
);
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.