缓加载优化

This commit is contained in:
unknown 2023-07-24 10:50:07 +08:00
parent 200f489359
commit f881fc914b
7 changed files with 77 additions and 36 deletions

View File

@ -1,7 +1,7 @@
import React, { useState } from "react"; import React from "react";
import { NavBar, Badge, TabBar } from "antd-mobile"; import { TabBar } from "antd-mobile";
import styles from "./index.module.scss"; import styles from "./index.module.scss";
import { Link, useNavigate, useLocation } from "react-router-dom"; import { useNavigate, useLocation } from "react-router-dom";
export const TabBarFooter: React.FC = () => { export const TabBarFooter: React.FC = () => {
const navigate = useNavigate(); const navigate = useNavigate();

View File

@ -5,7 +5,7 @@ import { user } from "../../api/index";
import styles from "./index.module.scss"; import styles from "./index.module.scss";
import { useSelector } from "react-redux"; import { useSelector } from "react-redux";
import { useNavigate, useLocation } from "react-router-dom"; import { useNavigate, useLocation } from "react-router-dom";
import { Footer, TabBarFooter, Empty } from "../../components"; import { Footer, Empty } from "../../components";
import { CoursesModel } from "./compenents/courses-model"; import { CoursesModel } from "./compenents/courses-model";
import { isEmptyObject } from "../../utils/index"; import { isEmptyObject } from "../../utils/index";
@ -321,7 +321,6 @@ const IndexPage = () => {
</> </>
)} )}
</div> </div>
<TabBarFooter></TabBarFooter>
</div> </div>
); );
}; };

View File

@ -0,0 +1,17 @@
import { Suspense } from "react";
import { Outlet } from "react-router-dom";
import LoadingPage from "../../loading";
import { TabBarFooter } from "../../../components";
const WithoutHeaderWithoutFooter = () => {
return (
<>
<Suspense fallback={<LoadingPage />}>
<Outlet />
</Suspense>
<TabBarFooter></TabBarFooter>
</>
);
};
export default WithoutHeaderWithoutFooter;

View File

@ -0,0 +1,13 @@
import { Suspense } from "react";
import { Outlet } from "react-router-dom";
import LoadingPage from "../../loading";
const WithoutHeaderWithoutFooter = () => {
return (
<Suspense fallback={<LoadingPage />}>
<Outlet />
</Suspense>
);
};
export default WithoutHeaderWithoutFooter;

View File

@ -7,7 +7,6 @@ import { loginAction, logoutAction } from "../../store/user/loginUserSlice";
import { ImageUploadItem } from "antd-mobile/es/components/image-uploader"; import { ImageUploadItem } from "antd-mobile/es/components/image-uploader";
import styles from "./index.module.scss"; import styles from "./index.module.scss";
import { useDispatch, useSelector } from "react-redux"; import { useDispatch, useSelector } from "react-redux";
import { TabBarFooter } from "../../components";
import moreIcon from "../../assets/images/commen/icon-more.png"; import moreIcon from "../../assets/images/commen/icon-more.png";
const MemberPage = () => { const MemberPage = () => {
@ -317,7 +316,6 @@ const MemberPage = () => {
</div> </div>
</div> </div>
</Mask> </Mask>
<TabBarFooter></TabBarFooter>
</div> </div>
); );
}; };

View File

@ -2,7 +2,7 @@ import { useState, useEffect } from "react";
import { Skeleton } from "antd-mobile"; import { Skeleton } from "antd-mobile";
import styles from "./index.module.scss"; import styles from "./index.module.scss";
import { course } from "../../api/index"; import { course } from "../../api/index";
import { TabBarFooter, Empty } from "../../components"; import { Empty } from "../../components";
import { CoursesModel } from "./compenents/courses-model"; import { CoursesModel } from "./compenents/courses-model";
import moment from "moment"; import moment from "moment";
@ -143,7 +143,6 @@ const StudyPage = () => {
</> </>
)} )}
</div> </div>
<TabBarFooter></TabBarFooter>
</div> </div>
); );
}; };

View File

@ -5,6 +5,9 @@ import { getToken } from "../utils";
// 页面加载 // 页面加载
import { InitPage } from "../pages/init"; import { InitPage } from "../pages/init";
import LoginPage from "../pages/login"; import LoginPage from "../pages/login";
import WithFooter from "../pages/layouts/with-footer";
import WithoutFooter from "../pages/layouts/without-footer";
//用户中心页面 //用户中心页面
const MemberPage = lazy(() => import("../pages/member/index")); const MemberPage = lazy(() => import("../pages/member/index"));
//主页 //主页
@ -62,35 +65,47 @@ const routes: RouteObject[] = [
children: [ children: [
{ {
path: "/", path: "/",
element: <PrivateRoute Component={<IndexPage />} />, element: <WithFooter />,
children: [
{
path: "/",
element: <PrivateRoute Component={<IndexPage />} />,
},
{
path: "/member",
element: <PrivateRoute Component={<MemberPage />} />,
},
{
path: "/study",
element: <PrivateRoute Component={<StudyPage />} />,
},
],
}, },
{ {
path: "/login", path: "/",
element: <LoginPage />, element: <WithoutFooter />,
}, children: [
{ {
path: "/member", path: "/login",
element: <PrivateRoute Component={<MemberPage />} />, element: <LoginPage />,
}, },
{ {
path: "/change-password", path: "/change-password",
element: <PrivateRoute Component={<ChangePasswordPage />} />, element: <PrivateRoute Component={<ChangePasswordPage />} />,
}, },
{ {
path: "/study", path: "/change-department",
element: <PrivateRoute Component={<StudyPage />} />, element: <PrivateRoute Component={<ChangeDepartmentPage />} />,
}, },
{ {
path: "/change-department", path: "/course/:courseId",
element: <PrivateRoute Component={<ChangeDepartmentPage />} />, element: <PrivateRoute Component={<CoursePage />} />,
}, },
{ {
path: "/course/:courseId", path: "/course/:courseId/hour/:hourId",
element: <PrivateRoute Component={<CoursePage />} />, element: <PrivateRoute Component={<CoursePlayPage />} />,
}, },
{ ],
path: "/course/:courseId/hour/:hourId",
element: <PrivateRoute Component={<CoursePlayPage />} />,
}, },
], ],
}, },