学员各页面缓存

This commit is contained in:
禺狨 2023-04-21 10:27:54 +08:00
parent 492270bfc3
commit 409fa080fc
6 changed files with 50 additions and 16 deletions

View File

@ -10,6 +10,7 @@
},
"dependencies": {
"@reduxjs/toolkit": "^1.9.3",
"ahooks": "^3.7.6",
"antd": "^5.3.2",
"axios": "^1.3.4",
"echarts": "^5.4.2",

View File

@ -0,0 +1,29 @@
import { useUpdate } from "ahooks";
import { useEffect, useRef } from "react";
import { useLocation, useOutlet } from "react-router-dom";
function KeepAlive() {
const componentList = useRef(new Map());
const outLet = useOutlet();
const { pathname } = useLocation();
const forceUpdate = useUpdate();
useEffect(() => {
if (!componentList.current.has(pathname)) {
componentList.current.set(pathname, outLet);
}
forceUpdate();
}, [pathname]);
return (
<div>
{Array.from(componentList.current).map(([key, component]) => (
<div key={key} style={{ display: pathname === key ? "block" : "none" }}>
{component}
</div>
))}
</div>
);
}
export default KeepAlive;

View File

@ -50,7 +50,7 @@ const items = [
"user",
<i className="iconfont icon-icon-user" />,
[
getItem("学员", "/member", null, null, null),
getItem("学员", "/member/index", null, null, null),
getItem("部门", "/department", null, null, null),
],
null

View File

@ -199,7 +199,7 @@ const DashboardPage = () => {
<div
className={styles["link-mode"]}
onClick={() => {
navigate("/member");
navigate("/member/index");
}}
>
<i

View File

@ -194,7 +194,7 @@ const DepartmentPage = () => {
type="link"
style={{ paddingLeft: 4, paddingRight: 4 }}
danger
onClick={() => navigate("/member")}
onClick={() => navigate("/member/index")}
>
{res.data.users.length}
</Button>

View File

@ -4,6 +4,7 @@ import { login, system } from "../api";
import InitPage from "../pages/init";
import { getToken } from "../utils";
import KeepAlive from "../compenents/keep-alive";
import LoginPage from "../pages/login";
import HomePage from "../pages/home";
@ -94,19 +95,22 @@ const routes: RouteObject[] = [
},
{
path: "/member",
element: <MemberPage />,
},
{
path: "/member/import",
element: <MemberImportPage />,
},
{
path: "/member/learn",
element: <MemberLearnPage />,
},
{
path: "/member/departmentUser",
element: <MemberDepartmentProgressPage />,
element: <KeepAlive />,
children: [
{ path: "/member/index", element: <MemberPage /> },
{
path: "/member/import",
element: <MemberImportPage />,
},
{
path: "/member/learn",
element: <MemberLearnPage />,
},
{
path: "/member/departmentUser",
element: <MemberDepartmentProgressPage />,
},
],
},
{
path: "/system/config/index",