Microsoft

Implementing Skeleton Parts in React / Blogs / Perficient

In our final weblog, we now have gone by means of the idea of what’s skeleton part in React. Now we’ll proceed to implement skeleton part in React.

The part helps 4 form variants:

  • textual content(default): represents a single line of textual content (you possibly can regulate the peak by way of font measurement).
  • round, rectangular, and rounded: include totally different border radius to allow you to take management of the dimensions.

Implementing Skeleton Parts

Let’s get began with creating one skeleton part.

Step 1: 

You’ll have to set up the @mui/materials module in your react venture.

npm set up @mui/materials

npm i @emotion/react @emotion/styled

Step 2: 

We will probably be creating one skeleton part for textual content. Open App.js file and add beneath code

import { Skeleton } from "@mui/materials";
import React from "react";
  
export default operate App() {
    return (
        <div>
            <h4>
                Skeleton part for Textual content
            </h4>
            <Skeleton variant="textual content" width={200} peak={50} />
        </div>
    );
}

Right here we are able to add width and peak for the skeleton. Output will probably be like this:

Text Skeleton

Equally for Rectangle, Circle and Rounded part variant, we are able to add skeleton code as beneath.

<Skeleton variant=”rectangular” width={300} peak={100} />

<Skeleton variant=”round” width={40} peak={40} />

<Skeleton variant=”rounded” width={210} peak={60} />

Now let’s create a skeleton part for real-time knowledge. For this we will probably be utilizing one React plugin react-content-loader

Now What’s React-Content material-Loader?

react-content-loader is a React part library used to create placeholder loading states, also known as “skeleton screens” or “skeleton loaders.” The library supplies a set of customizable parts that mimic the construction of your precise content material whereas it’s loading. This helps keep the general format of a web page and supplies a greater consumer expertise in comparison with a clean or empty house.

Right here’s a fundamental instance of utilizing react-content-loader:

Step 1: npm set up react-content-loader

Step 2: Create one SkeletonComponent.js file and add the code beneath

import React from 'react';
import ContentLoader from 'react-content-loader';

const SkeletonComponent = () => (
  <ContentLoader
    pace={4}
    width={400}
    peak={200}
    viewBox="0 0 400 200"
    backgroundColor="#f3f3f3"
    foregroundColor="#ecebeb">

    <rect x="0" y="0" rx="3" ry="3" width="400" peak="10" />
    <rect x="0" y="20" rx="3" ry="3" width="400" peak="10" />
    <rect x="0" y="40" rx="3" ry="3" width="400" peak="10" />
    <rect x="0" y="60" rx="3" ry="3" width="400" peak="10" />
    <rect x="0" y="80" rx="3" ry="3" width="400" peak="10" />
    <rect x="0" y="100" rx="3" ry="3" width="400" peak="10" />
    {/* Add extra shapes as wanted */}
  </ContentLoader>
  
);

export default SkeletonComponent;

Step 3: Create one file as DataList.js and add beneath code

import React, { useState, useEffect } from 'react';
import SkeletonComponent from './SkeletonComponent';

const DataList = () => {
  const [data, setData] = useState(null);
  const [loading, setLoading] = useState(true);

  useEffect(() => {
    const fetchData = async () => {
      strive {
        const response = await fetch('https://jsonplaceholder.typicode.com/posts');
        const consequence = await response.json();
        setData(consequence);
      } catch (error) {
        console.error('Error fetching knowledge:', error);
      } lastly {
        setLoading(false);
      }
    };
    fetchData();
  }, []);

  return (
    <div>
      {loading ? (
        <SkeletonComponent />
      ) : (
        <ul>
          {knowledge?.map(submit => (
            <li key={submit.id}>{submit.title}</li>
          ))}
        </ul>
      )}
    </div>
  );
};

export default DataList;

Step 4: Within the App.js, add beneath code

import React from 'react';
import DataList from './DataList';

const App = () => {
  return (
    <div>
      <h1>Knowledge Checklist</h1>
      <DataList />
    </div>
  );
};

export default App;

Data List Image

Data List Image

On this approach, we are able to use the react-content-loader device to reinforce the consumer expertise by offering a visible illustration of content material loading.

By utilizing a Skeleton Element, react functions can handle loading states gracefully, contributing to a extra partaking and user-friendly interface.

Thanks for studying !!!



About the author

Theme control panel

Leave a Comment