- dynamic import
const SomeComponent = React.lazy(() => import('./SomeComponent'));
- lazy load+ suspend
Before: import Login from "Pages/Login.js";
After: import React,{lazy, Suspense} from 'react';
const Service = lazy(() => import("module/Service"));
const Hero = lazy(() => import("module/Hero"));
const Home = () => { return (
<div>
<Suspense fallback={<div>Page is loading...</div>}>
<section>
<Service />
<Hero />
</section>
</Suspense>
</div>
- react-router
react-router-dom supports route-level code splitting:
import { BrowserRouter as Router, Route, Switch } from
'react-router-dom';
const Home = lazy(() => import('./routes/Home'));
const Shop = lazy(() => import('./routes/Shop'));
const App = () => {
return (
<Router>
<Suspense fallback={<div>Page is Loading...</div>}>
<Switch>
<Route exact path="/" component="{Home}" />
<Route path="/shop" component="{Shop}" />
</Switch>
</Suspense>
</Router>
) };