aboutsummaryrefslogtreecommitdiff
path: root/src/pages
diff options
context:
space:
mode:
authoreug-vs <eug-vs@keemail.me>2020-08-09 16:09:21 +0300
committereug-vs <eug-vs@keemail.me>2020-08-09 16:09:21 +0300
commit236062c6c6278c4b433463fef9fa37eebf3fd760 (patch)
treed4451a7a9d0e29cac7c2ea91b1648f7450bbfc6b /src/pages
parent70d20b76f042a519e8e164279dfa31b5ce027d44 (diff)
downloadwhich-ui-236062c6c6278c4b433463fef9fa37eebf3fd760.tar.gz
feat: lazy-load pages
Diffstat (limited to 'src/pages')
-rw-r--r--src/pages/Page.tsx33
1 files changed, 18 insertions, 15 deletions
diff --git a/src/pages/Page.tsx b/src/pages/Page.tsx
index 668b171..49c941a 100644
--- a/src/pages/Page.tsx
+++ b/src/pages/Page.tsx
@@ -1,15 +1,16 @@
-import React from 'react';
+import React, { Suspense } from 'react';
import { makeStyles, useTheme } from '@material-ui/core/styles';
import { useMediaQuery } from '@material-ui/core';
import { SnackbarProvider } from 'notistack';
import { Switch, Route } from 'react-router-dom';
+import Loading from '../components/Loading/Loading';
-import ProfilePage from './ProfilePage/ProfilePage';
-import FeedPage from './FeedPage/FeedPage';
-import LoginPage from './LoginPage/LoginPage';
-import RegistrationPage from './RegistrationPage/RegistrationPage';
-import HomePage from './HomePage/HomePage';
-import NotificationsPage from './NotificationsPage/NotificationsPage';
+const ProfilePage = React.lazy(() => import( './ProfilePage/ProfilePage'));
+const FeedPage = React.lazy(() => import( './FeedPage/FeedPage'));
+const LoginPage = React.lazy(() => import( './LoginPage/LoginPage'));
+const RegistrationPage = React.lazy(() => import( './RegistrationPage/RegistrationPage'));
+const HomePage = React.lazy(() => import( './HomePage/HomePage'));
+const NotificationsPage = React.lazy(() => import( './NotificationsPage/NotificationsPage'));
const useStyles = makeStyles(theme => ({
@@ -38,14 +39,16 @@ const Page: React.FC = () => {
}}
>
<div className={classes.root}>
- <Switch>
- <Route exact path="/" component={HomePage} />
- <Route exact path="/login" component={LoginPage} />
- <Route exact path="/registration" component={RegistrationPage} />
- <Route exact path="/feed" component={FeedPage} />
- <Route exact path="/notifications" component={NotificationsPage} />
- <Route path="/profile/:username" component={ProfilePage} />
- </Switch>
+ <Suspense fallback={<Loading />}>
+ <Switch>
+ <Route exact path="/" component={HomePage} />
+ <Route exact path="/login" component={LoginPage} />
+ <Route exact path="/registration" component={RegistrationPage} />
+ <Route exact path="/feed" component={FeedPage} />
+ <Route exact path="/notifications" component={NotificationsPage} />
+ <Route path="/profile/:username" component={ProfilePage} />
+ </Switch>
+ </Suspense>
</div>
</SnackbarProvider>
);