Here’s a step-by-step guide to implementing lazy loading and code splitting in a React project. We'll create a simple application with two routes, loading components lazily.
Step 1: Create a New React App
If you haven’t already, create a new React app using Create React App:
npx create-react-app lazy-loading-example
cd lazy-loading-example
Step 2: Install React Router
Install react-router-dom
for routing:
npm install react-router-dom
Step 3: Set Up Lazy Loading and Code Splitting
Create Components
- Create a folder named
components
inside thesrc
directory. - Inside
components
, create two files:Home.js
andAbout.js
.
Home.js
import React from 'react';
const Home = () => {
return <h2>Home Page</h2>;
};
export default Home;
About.js
import React from 'react';
const About = () => {
return <h2>About Page</h2>;
};
export default About;
Update App.js
Now, modify your App.js
file to implement lazy loading and routing:
import React, { Suspense } from 'react';
import { BrowserRouter as Router, Route, Switch, Link } from 'react-router-dom';
// Lazy load components
const Home = React.lazy(() => import('./components/Home'));
const About = React.lazy(() => import('./components/About'));
function App() {
return (
<Router>
<nav>
<ul>
<li>
<Link to="/">Home</Link>
</li>
<li>
<Link to="/about">About</Link>
</li>
</ul>
</nav>
<Suspense fallback={<div>Loading...</div>}>
<Switch>
<Route path="/about" component={About} />
<Route path="/" component={Home} />
</Switch>
</Suspense>
</Router>
);
}
export default App;
Step 4: Run Your Application
Now, run your application to see it in action:
npm start
Step 5: Test Lazy Loading
- Open your browser and navigate to
http://localhost:3000
. - Click on the "Home" link to see the Home component load.
- Click on the "About" link to see the About component load lazily.
Key Points
- React.lazy is used to dynamically import components, which are loaded only when they are rendered.
- Suspense is used to handle the loading state, displaying a fallback while the lazy-loaded component is being fetched.
- This approach significantly reduces the initial load time by splitting the code into smaller chunks.
Additional Enhancements
You can further enhance your setup by:
- Implementing error boundaries around your lazy-loaded components to catch loading errors.
- Using advanced routing strategies with
React Router
for larger applications.
If you need more specific features or additional help, let me know!
Top comments (0)