mirror of
https://github.com/PlayEdu/h5.git
synced 2025-06-08 02:54:10 +08:00
缓加载优化
This commit is contained in:
parent
200f489359
commit
f881fc914b
@ -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();
|
||||||
|
@ -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>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
17
src/pages/layouts/with-footer/index.tsx
Normal file
17
src/pages/layouts/with-footer/index.tsx
Normal 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;
|
13
src/pages/layouts/without-footer/index.tsx
Normal file
13
src/pages/layouts/without-footer/index.tsx
Normal 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;
|
@ -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>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
@ -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>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
@ -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 />} />,
|
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
Loading…
x
Reference in New Issue
Block a user