Hello friends, welcome back to my blog. Today in this blog post, I am going to show you, Reactjs Showing Skeleton Loader During API Call.
For reactjs and bootstrap 5 new comers, please check the below links:
Friends now I proceed onwards and here is the working code snippet and please use this carefully to avoid the mistakes:
1. Firstly, we need fresh reactjs setup and for that, we need to run below commands into out terminal and also we should have latest node version installed on our system:
npx create-react-app reactdemo cd reactdemo
2. Now we need to run below commands into our project terminal to get axios, skeleton loader, bootstrap and related modules into our reactjs application:
npm install bootstrap --save npm i react-loading-skeleton npm i axios npm start //For start project
3. Finally for the main output, we need to add below code into our reactdemo/src/App.js file or if you have fresh setup then you can replace reactdemo/src/App.js file code with below code:
import React from 'react'; //Import libraries import 'bootstrap/dist/css/bootstrap.min.css'; import axios from 'axios'; import Skeleton from 'react-loading-skeleton'; class App extends React.Component { state={ products:[], skeletonLoader:true } componentDidMount(){ //calling rest api for products data axios.get('https://www.testjsonapi.com/products/') .then(res =>{ const products = res.data; this.setState({products}); this.setState({skeletonLoader:false}) }) } render(){ return ( <div className="MainDiv"> <div className="jumbotron text-center pt-5"> <h3 className="mt-5 mb-5">therichpost.com</h3> </div> <div className="container"> {this.state.skeletonLoader && ( <div style={{ fontSize: 20, lineHeight: 2 }}> <h1>{this.props.title || <Skeleton />}</h1> {this.props.body || <Skeleton count={10} />} </div> )} <section class="py-5"> <div class="container px-4 px-lg-5 mt-5"> <div class="row gx-4 gx-lg-5 row-cols-2 row-cols-md-3 row-cols-xl-4 justify-content-center"> {this.state.products.map((result) => { return ( <div class="col mb-5"> <div class="card h-100"> <img class="card-img-top" src={result.product_image} /> <div class="card-body p-4"> <div class="text-center"> <a href="#"><h5 class="fw-bolder">{result.product_title}</h5></a> {result.product_price} </div> </div> <div class="card-footer p-4 pt-0 border-top-0 bg-transparent"> <div class="text-center"><a class="btn btn-outline-dark mt-auto" href="#">View options</a></div> </div> </div> </div> ) })} </div> </div> </section> </div> </div> ); } } export default App;
Now we are done friends. If you have any kind of query or suggestion or any requirement then feel free to comment below.
Note: Friends, I just tell the basic setup and things, you can change the code according to your requirements.
I will appreciate that if you will tell your views for this post. Nothing matters if your views will be good or bad.
Jassa
Thanks
Recent Comments