App.jsx
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
import React, { useEffect, useState } from 'react' import { LazyLoadImage } from 'react-lazy-load-image-component' import "react-lazy-load-image-component/src/effects/blur.css" function App() { const [posts,setPosts] = useState([]) const [loading,setLoading] = useState(true) const fetchPosts = async () => { try { const response = await fetch( "https://jsonplaceholder.typicode.com/posts" ); const data = await response.json(); console.log(data); // Hide the loading screen setLoading(false); setPosts(data); } catch (error) { console.log(error); } }; useEffect(() => { fetchPosts(); }, []); return ( <div className="post-gallery"> {loading && <p>Loading posts...</p>} {!loading && posts.map((post) => ( <div className="post-card" key={post.id}> <LazyLoadImage src={`https://picsum.photos/id/${post.id}/300/200`} alt={`Post ${post.id}`} effect="blur" height="200" width="300" placeholderSrc="https://via.placeholder.com/300x200" className="post-image" /> <h3>{post.title}</h3> <p>{post.body}</p> </div> ))} </div> ) } export default App |