From dd8e22d13f3ff2112eb15865430a8921bc24207e Mon Sep 17 00:00:00 2001 From: Michael Fatemi <myfatemi04@gmail.com> Date: Sun, 29 Nov 2020 01:26:25 -0500 Subject: [PATCH] Added code-splitting with React.lazy --- src/App.tsx | 56 +++++++++++++++++++++++++++-------------------------- 1 file changed, 29 insertions(+), 27 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index 40b3580..baba821 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,37 +1,39 @@ -import React from 'react'; +import React, { Suspense } from 'react'; import { BrowserRouter, Route, Switch } from 'react-router-dom'; import Layout from './components/Layout'; import './App.css'; -import index from './pages/index'; -import initiatives from './pages/initiatives'; -import involved from './pages/involved'; -import mission from './pages/mission'; -import news from './pages/news'; -import newsarticle from './pages/newsarticle'; -import notFound from './pages/404'; -import officers from './pages/officers'; -import committee from './pages/committee'; -import classcouncil from './pages/classcouncil'; +const index = React.lazy(() => import('./pages/index')); +const initiatives = React.lazy(() => import('./pages/initiatives')); +const involved = React.lazy(() => import('./pages/involved')); +const mission = React.lazy(() => import('./pages/mission')); +const news = React.lazy(() => import('./pages/news')); +const newsarticle = React.lazy(() => import('./pages/newsarticle')); +const notfound = React.lazy(() => import('./pages/404')); +const officers = React.lazy(() => import('./pages/officers')); +const committee = React.lazy(() => import('./pages/committee')); +const classcouncil = React.lazy(() => import('./pages/classcouncil')); export default function App() { return ( - <BrowserRouter> - <Layout> - <Switch> - <Route path='/initiatives' exact component={initiatives} /> - <Route path='/involved' exact component={involved} /> - <Route path='/news/:articleId' component={newsarticle} /> - <Route path='/news' exact component={news} /> - <Route path='/mission' exact component={mission} /> - <Route path='/officers' exact component={officers} /> - <Route path='/committee' exact component={committee} /> - <Route path='/class-council' exact component={classcouncil} /> - <Route path='/:path' component={notFound} /> - <Route path='/' exact component={index} /> - </Switch> - </Layout> - </BrowserRouter> + <Suspense fallback="Loading..."> + <BrowserRouter> + <Layout> + <Switch> + <Route path='/initiatives' exact component={initiatives} /> + <Route path='/involved' exact component={involved} /> + <Route path='/news/:articleId' component={newsarticle} /> + <Route path='/news' exact component={news} /> + <Route path='/mission' exact component={mission} /> + <Route path='/officers' exact component={officers} /> + <Route path='/committee' exact component={committee} /> + <Route path='/class-council' exact component={classcouncil} /> + <Route path='/:path' component={notfound} /> + <Route path='/' exact component={index} /> + </Switch> + </Layout> + </BrowserRouter> + </Suspense> ); }