![](/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.