diff --git a/web/src/App.tsx b/web/src/App.tsx index 2fd8a98e..699857f0 100644 --- a/web/src/App.tsx +++ b/web/src/App.tsx @@ -1,9 +1,10 @@ import { CssVarsProvider } from "@mui/joy/styles"; -import { useEffect } from "react"; +import { useEffect, Suspense } from "react"; import { useTranslation } from "react-i18next"; import { RouterProvider } from "react-router-dom"; import { locationService } from "./services"; import { useAppSelector } from "./store"; +import Loading from "./pages/Loading"; import router from "./router"; import * as storage from "./helpers/storage"; import theme from "./theme"; @@ -43,7 +44,9 @@ function App() { return ( - + }> + + ); } diff --git a/web/src/less/loading.less b/web/src/less/loading.less new file mode 100644 index 00000000..f4702a0e --- /dev/null +++ b/web/src/less/loading.less @@ -0,0 +1,11 @@ +.page-wrapper.loading { + @apply flex flex-row justify-center items-center w-full h-screen bg-white dark:bg-zinc-900; + + > .page-container { + @apply w-80 max-w-full h-full py-4 flex flex-col justify-center items-center; + + >.loading-icon { + @apply animate-spin; + } + } +} diff --git a/web/src/pages/Loading.tsx b/web/src/pages/Loading.tsx new file mode 100644 index 00000000..10b9bef7 --- /dev/null +++ b/web/src/pages/Loading.tsx @@ -0,0 +1,14 @@ +import Icon from "../components/Icon"; +import "../less/loading.less"; + +function Loading() { + return ( +
+
+ +
+
+ ); +} + +export default Loading; diff --git a/web/src/router/index.tsx b/web/src/router/index.tsx index 682a97e9..f2398098 100644 --- a/web/src/router/index.tsx +++ b/web/src/router/index.tsx @@ -1,10 +1,12 @@ import { createBrowserRouter, redirect } from "react-router-dom"; +import { lazy } from "react"; import { isNullorUndefined } from "../helpers/utils"; import { globalService, userService } from "../services"; -import Auth from "../pages/Auth"; -import Explore from "../pages/Explore"; -import Home from "../pages/Home"; -import MemoDetail from "../pages/MemoDetail"; + +const Auth = lazy(() => import("../pages/Auth")); +const Explore = lazy(() => import("../pages/Explore")); +const Home = lazy(() => import("../pages/Home")); +const MemoDetail = lazy(() => import("../pages/MemoDetail")); const router = createBrowserRouter([ {