DEV Community

Cover image for ๐ŸŒŸ Supercharge Your React App: The Ultimate Guide to Stunning Loading Effects!
Rohit Yadav
Rohit Yadav

Posted on

๐ŸŒŸ Supercharge Your React App: The Ultimate Guide to Stunning Loading Effects!

Hey there, React beginners! Have you ever visited a website where you see a little spinning animation indicating that something is loading? That's what we call a spinner! It's a great way to let users know that your app is working on fetching data or performing some task in the background. Today, I'll walk you through how to add a spinner to your React application using a library called react-spinners.

What is react-spinners?

React-spinners is a library that provides pre-built spinner components for React applications. These components are customizable and easy to use, making it simple for developers to add loading indicators to their projects without having to create them from scratch.

Prerequisites

Before we begin, make sure you have Node.js and npm (Node Package Manager) installed on your system. You should also have a basic understanding of React and JSX.

Getting Started

Before we dive in, make sure you have a React project set up. If you haven't already created one, you can use Create React App to quickly generate a new project:

npx create-react-app my-spinner-app
cd my-spinner-app
npm start
Enter fullscreen mode Exit fullscreen mode

Once your project is set up, you can install react-spinners by running:

npm install react-spinners
Enter fullscreen mode Exit fullscreen mode

Choosing a Spinner

The react-spinners library offers various spinner styles to choose from. You can explore the available options on the official documentation. For this tutorial, let's select the "PulseLoader" spinner.

Adding a Spinner Component

Now that we have react-spinners installed, let's create a simple spinner component and add it to our application.

First, create a new file called Spinner.js in your src directory.

// Spinner.js
import React from 'react'
import PulseLoader from 'react-spinners/PulseLoader';

const Spinner = ({ color, size }) => {

    const spinner = (
        <PulseLoader color={color ? color : 'white'} size={size ? size : 8} aria-label="Loading Spinner" />
    );

    return (
        <div>{spinner}</div>
    )
}

export default Spinner
Enter fullscreen mode Exit fullscreen mode

In this code:

  • We import React from the React library, as we're creating a React component.
  • We import PulseLoader from 'react-spinners/PulseLoader', which is a component used for displaying a pulsating loading spinner animation.
  • We define a functional component called Spinner that takes in two props: color and size.
  • Inside the Spinner component, we initialize a constant named spinner, which holds the PulseLoader component. We set the color prop to the value passed via props or default to 'white', and the size prop to the value passed via props or default to 8.
  • We return a <div> containing the spinner component.
  • The aria-label attribute is set on the PulseLoader component for accessibility purposes, providing a label for the loading spinner.
  • Finally, we export the Spinner component as the default export from this module.

Using the Spinner Component

Now that we have our spinner component, let's use it in our main App component.

// App.js
import React, { useState, useEffect } from 'react';
import Spinner from './Spinner';

const App = () => {
  const [loading, setLoading] = useState(true);

  useEffect(() => {
    // Simulate a delay (e.g., fetching data from an API)
    const timer = setTimeout(() => {
      setLoading(false);
    }, 3000); // Change the time according to your needs

    return () => clearTimeout(timer);
  }, []);

  return (
    <div className="App">
      {loading ? <Spinner /> : <h1>Content Loaded!</h1>}
    </div>
  );
};

export default App;
Enter fullscreen mode Exit fullscreen mode

In this code:

  • We import React, useState, useEffect, and our Spinner component.
  • We create a state variable loading to keep track of whether our content is loading or not.
  • We use the useEffect hook to simulate a loading delay. In a real-world scenario, this is where you might fetch data from an API.
  • While loading is true, we display the Spinner component. Once the loading is complete (loading becomes false), we display the content.

Conclusion

And that's it! You've successfully added a spinner to your React application using react-spinners. Feel free to customize the spinner's appearance and behavior according to your project's requirements. Happy coding! ๐Ÿš€

Top comments (0)