ThatManK Mobile Article
配置左侧边栏
- Home.tsx 配置为首页, 引入 antd 组件
import React, { useState } from "react";
import { Breadcrumb, Layout, Menu, theme } from "antd";
// 配置参数
import { tabItem } from "@/pages/config/home";
const { Header, Content, Footer, Sider } = Layout;
const Home: React.FC = () => {
const [collapsed, setCollapsed] = useState(false);
const {
token: { colorBgContainer },
} = theme.useToken();
return (
<Layout style={{ minHeight: "100vh" }}>
{/* 侧边栏 */}
<Sider
collapsible
collapsed={collapsed}
onCollapse={(value) => setCollapsed(value)}
>
<div
style={{
height: 32,
margin: 16,
background: "rgba(255, 255, 255, 0.2)",
}}
/>
<Menu
theme="dark"
defaultSelectedKeys={["1"]}
mode="inline"
items={tabItem}
/>
</Sider>
{/* 右边 */}
<Layout className="site-layout">
{/* 头部区域 */}
<Header style={{ paddingLeft: 16, background: colorBgContainer }}>
<Breadcrumb style={{ lineHeight: "64px" }}>
<Breadcrumb.Item>User</Breadcrumb.Item>
<Breadcrumb.Item>Bill</Breadcrumb.Item>
</Breadcrumb>
</Header>
{/* 内容区 */}
<Content
style={{
margin: "16px 16px 0",
background: colorBgContainer,
}}
>
要配置Outlet
</Content>
{/* 底部, 高度与左边保持一致 */}
<Footer
style={{ padding: 0, textAlign: "center", lineHeight: "48px" }}
>
Ant Design ©2018 Created by Ant UED
</Footer>
</Layout>
</Layout>
);
};
export default Home;
- 创建全局参数配置目录, 配置 Home.tsx 页面参数
- src\pages\config\home.tsx
import { MenuProps } from "antd";
import {
DesktopOutlined,
FileOutlined,
PieChartOutlined,
TeamOutlined,
UserOutlined,
} from "@ant-design/icons";
const genItem = () => {
type MenuItem = Required<MenuProps>["items"][number];
function getItem(
label: React.ReactNode,
key: React.Key,
icon?: React.ReactNode,
children?: MenuItem[]
): MenuItem {
return {
key,
icon,
children,
label,
} as MenuItem;
}
const items: MenuItem[] = [
getItem("栏目一", "1", <PieChartOutlined />),
getItem("栏目二", "2", <DesktopOutlined />),
getItem("栏目三", "sub1", <UserOutlined />, [
getItem("三目一", "3"),
getItem("三目二", "4"),
getItem("三目三", "5"),
]),
getItem("栏目四", "sub2", <TeamOutlined />, [
getItem("四目一", "6"),
getItem("四目二", "8"),
]),
getItem("栏目五", "9", <FileOutlined />),
];
return items;
};
export const tabItem = genItem();
- App.tsx 中保持不变
import React from "react";
import { useRoutes } from "react-router-dom";
import router from "@/router/router";
const App = () => {
const RouterOutlet = useRoutes(router);
return <div className="App">{RouterOutlet}</div>;
};
export default App;