ThatManK Mobile Article
实现Home页面导航的切换
实现 Home 页面导航的切换
一、Home 页面配置
- 左侧 tab 的点击事件
<Menu
theme="dark"
defaultSelectedKeys={["1"]}
mode="inline"
items={tabItem}
onClick={(e) => menuClick(e.key)}
/>
- 配置点击跳转
// etc...
const navitateTo = useNavigate();
const menuClick = (key: string) => {
navitateTo(key);
};
// etc...
- src\pages\config\home.tsx 参数修改
// etc...
const items: MenuItem[] = [
getItem("栏目一", "/page1", <PieChartOutlined />),
getItem("栏目二", "/page2", <DesktopOutlined />),
// etc...
];
// etc...
- 创建两个页面
- src\pages\Page1\Page1.tsx
- src\pages\Page2\Page2.tsx
- 配置路由 src\router\router.tsx
import React, { lazy, Suspense } from "react";
import { Navigate } from "react-router-dom";
import Home from "@/pages/Home/Home";
const About = lazy(() => import("@/pages/About/About"));
const Page1 = lazy(() => import("@/pages/Page1/Page1"));
const Page2 = lazy(() => import("@/pages/Page2/Page2"));
const withLoadingComponent = (comp: JSX.Element) => (
<Suspense fallback={<div>Loading...</div>}>{comp}</Suspense>
);
const routes = [
// 默认要展示page1的内容
{
path: "/",
element: <Navigate to="/page1" />,
},
// page1 又是Home的组件,Home也展示
{
path: "/",
element: <Home />,
children: [
{
path: "/page1",
element: withLoadingComponent(<Page1 />),
},
{
path: "/page2",
element: withLoadingComponent(<Page2 />),
},
],
},
{
path: "*",
element: <Navigate to="/page1" />,
},
];
export default routes;
- 配置 Outlet 实现点击跳转
- 说明:路由里, Page 1/2 是 Home 的子页面, Home 页面样式排版已固定
- 那么, Page 1/2 在 Outlet 里面显示
- 并且点击实现切换页面展示
// etc...
import { useNavigate, Outlet } from "react-router-dom";
<Content
style={{
margin: "16px 16px 0",
background: colorBgContainer,
}}
>
<Outlet />
</Content>;
// etc...