我正在尝试创建一个Dashboard
,但是我被嵌套的路由卡住了。就像我想在屏幕上有导航栏,侧边栏和页脚,但是只有主要的组件应该改变。
我在两个文件中使用了路由:App.js
和Home.jsx
。
App.js:
import React from "react";
import "./App.css";
import { BrowserRouter as Router, Routes, Route } from "react-router-dom";
import Login from "./pages/login/Login";
import Registeration from "./pages/registeration/Registeration";
import Home from "./pages/Home/Home";
function App() {
return (
<div className="App">
<Router>
<Routes>
<Route
path="/"
element={
<React.Fragment>
<div className="login_page">
<Login />
</div>
</React.Fragment>
}
/>
<Route
path="registeration"
element={
<React.Fragment>
<div className="login_page">
<Registeration />
</div>
</React.Fragment>
}
/>
<Route path="home" element={<Home />} />
</Routes>
</Router>
</div>
);
}
export default App;
Home.jsx:
import React from "react";
import { BrowserRouter as Router, Routes, Route } from "react-router-dom";
import Assets from "../../components/assets/Assets";
import Balance from "../../components/balance/Balance";
import Dashboard from "../../components/dashboard/Dashboard";
import { Footer } from "../../components/Footer/Footer";
import Navbar from "../../components/navbar/Navbar";
import OpenAccount from "../../components/openAccount/OpenAccount";
import Sidebar from "../../components/sidebar/Sidebar";
import "./Home.scss";
const Home = () => {
return (
<div className="home">
<Sidebar />
<div className="homeContainer">
<Navbar />
<div>
<Routes>
<Route path="/balance" element={<Balance />} />
<Route path="/" element={<Dashboard />} />
<Route path="/assets" element={<Assets />} />
<Route path="/open-account" element={<OpenAccount />} />
</Routes>
</div>
<Footer />
</div>
</div>
);
};
export default Home;
2条答案
按热度按时间2g32fytz1#
看起来您已经在App.js和Home.jsx文件中正确设置了路由,但是您在Home.jsx中使用的是嵌套路由,这意味着您需要使用react-router-dom中的Outlet组件来呈现子路由。
下面是更正后的Home.jsx文件:
请注意,我已经用Outlet组件替换了子路由,这将呈现Home组件内部的嵌套路由。
另外,在App.js文件中,Registeration页面的Route组件的路径prop中有一个拼写错误,您将“registration”写成了“registeration”。
bsxbgnwa2#
在当前实现中,
Home
组件正在呈现***后代***路由,而不是嵌套路由。为了使后代路由可用于匹配并呈现其路由内容,父路由必须在其路径中附加尾随通配符"*"
匹配器。示例:
另请注意,派生路由是相对于其父路由构建的,因此
Home
路由将解析为:通过将
Home
组件转换为布局路由组件,您也可以使用***嵌套***路由实现相同的目的。布局路由为嵌套路由呈现Outlet
组件,以便将element
内容呈现到该组件中,而不是直接呈现后代路由。示例:
一个二个一个一个