引入Menu
Tutorial: ReactVite案例
Category: React
Published: 2026-04-07 13:58:26
Views: 20
Likes: 0
Comments: 0
引入 Menu
- 调整 router
import { Navigate, useRoutes } from "react-router-dom";
import User from "../pages/User/User";
import Home from "../pages/Home/Home";
import Layout from "../pages/Layout/Layout";
export const routerItem: Array<Object> = [
{
path: "/",
key: "index",
label: "首页",
element: <Navigate to="/layout/home" />,
},
{
path: "/layout",
key: "layout",
element: <Layout />,
label: "控制台",
children: [
{
path: "user",
key: "layout-user",
label: "用户",
element: <User />,
index: "true",
},
{
path: "home",
key: "layout-home",
label: "首页",
element: <Home />,
},
],
},
];
const GetRouters = () => {
return useRoutes(routerItem);
};
export default GetRouters;
- 调整 App
import React from "react";
import GetRouters from "./router/router";
const App = () => {
return (
<>
<GetRouters />
</>
);
};
export default App;
- 封装 Aside, 新建 src\pages\Layout\Aside.tsx
import React, { useState } from "react";
import { Menu } from "antd";
import { routerItem } from "../../router/router";
const Aside = () => {
const [router] = useState(routerItem);
return (
<>
<Menu mode="inline" theme="dark" items={router} />
</>
);
};
export default Aside;
- Layout 引入
import React from "react";
import { Outlet } from "react-router-dom";
import Aside from "./Aside";
import "./Layout.scss";
function Layout() {
return (
<section id="container">
<aside>
<Aside />
</aside>
<section>
<header>header</header>
<main>
<Outlet />
</main>
</section>
</section>
);
}
export default Layout;
- 适应 antd 样式 src\pages\Layout\Layout.scss
#container {
display: flex;
width: 100vw;
height: 100vh;
aside {
width: 200px;
background-color: #001529;
}
section {
flex: 1;
display: flex;
flex-direction: column;
header {
background-color: aqua;
height: 50px;
}
main {
flex: 1;
margin: 0;
}
}
}