我的項目中有一個文件夾結構,如下所示:
- -登錄
- -主要的
在應用程序中,我實現了這樣的路由,這對我來說很好用:
import { BrowserRouter as Router, Routes, Route} from 'react-router-dom';
<div className="App">
<Router>
<Routes>
<Route path="/" element={<Login />} />
<Route path="/main" element={<Main />} />
</Routes>
</Router>
</div>
但我的問題從這裡開始。當我轉到主頁時,我想在主頁內呈現嵌套路由。我這樣編碼,但不幸的是沒有什麼對我有用。
這是我的主要組件中的代碼。
import {
BrowserRouter as Router,
Routes,
Route,
Outlet,
Link
} from 'react-router-dom';
<
<h1>
hello Home
</h1>
<Link to="/main/child1">
child 1
</Link>||||
<Link to="/main/child2">
child 2
</Link>
<Link to="/">
log out
</Link>
<Outlet />
<Routes>
<Route path="/main/child1" element={<Children1 />} />
<Route path="/main/child2" element={<Children2 />} />
</Routes>
我想在我的主要組件下方渲染孩子,但沒有任何反應。並希望將 url 更改為 "/main/child1" 。
如果您能詳細解釋一下,我將不勝感激。
謝謝。
這裡是示例代碼示例在這裡
您可以使用以下代碼:
import React from "react";
import {
BrowserRouter as Router,
Switch,
Route,
Link,
useRouteMatch,
useParams
} from "react-router-dom";
export default function App() {
return (
<Router>
<div>
<ul>
<li>
<Link to="/">Login</Link>
</li>
<li>
<Link to="/main">Main</Link>
</li>
</ul>
<Switch>
<Route path="/">
<Login />
</Route>
<Route path="/main">
<Main />
</Route>
</Switch>
</div>
</Router>
);
}
function Login() {
return <h2>LoginPage</h2>;
}
function Main() {
let match = useRouteMatch();
return (
<div>
<h2>Main Page</h2>
<ul>
<li>
<Link to={`${match.url}/children`}>children</Link>
</li>
<li>
<Link to={`${match.url}/child1`}>
Child_One
</Link>
</li>
</ul>
<Switch>
<Route path={`${match.path}/:childId`}>
<Child />
</Route>
<Route path={match.path}>
<h3>Please select a child.</h3>
</Route>
</Switch>
</div>
);
}
function Child() {
let { childId } = useParams();
return <h3>Requested child ID: {childId}</h3>;
}
Main 頁面有自己的更多路由,這些路由建立在 /main URL 路徑上。您可以將此處的 2nd 視為主頁的所有子頁面的“索引”頁面,或者在未選擇子頁面時顯示的頁面。
欲了解更多信息,請參閱:鏈接
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句