|
1 | | -import React from 'react' |
2 | | -import { Link } from 'react-router-dom' |
| 1 | +import React, { useEffect, useRef } from 'react' |
| 2 | +import { Link, useLocation } from 'react-router-dom' |
| 3 | +import cardsData from './CardsData' |
| 4 | +import { useNavigate } from 'react-router-dom' |
3 | 5 |
|
4 | 6 | const Cards = () => { |
5 | | - const cardsData = [ |
6 | | - { |
7 | | - id: 1, |
8 | | - img: " https://random-image-pepebigotes.vercel.app/api/skeleton-random-image", |
9 | | - tittle: "I am Creating a Card title", |
10 | | - para: " this is an cards paragraph Lorem ipsum dolor sit amet consectetur, adipisicing elit. Molestias modi, facere sequi architecto minus eum iste dolores quod aut corrupti!" |
11 | | - }, |
12 | | - { |
13 | | - id: 2, |
14 | | - img: "https://random-image-pepebigotes.vercel.app/api/random-image", |
15 | | - tittle: "I am Creating a Card title", |
16 | | - para: " this is an cards paragraph Lorem ipsum dolor sit amet consectetur, adipisicing elit. Molestias modi, facere sequi architecto minus eum iste dolores quod aut corrupti!" |
17 | | - }, |
18 | | - { |
19 | | - id: 3, |
20 | | - img: " https://random-image-pepebigotes.vercel.app/api/swag-wallpaper ", |
21 | | - tittle: "I am Creating a Card title", |
22 | | - para: " this is an cards paragraph Lorem ipsum dolor sit amet consectetur, adipisicing elit. Molestias modi, facere sequi architecto minus eum iste dolores quod aut corrupti!" |
23 | | - }, |
24 | | - { |
25 | | - id: 4, |
26 | | - img: "https://random-image-pepebigotes.vercel.app/api/random-image", |
27 | | - tittle: "I am Creating a Card title", |
28 | | - para: " this is an cards paragraph Lorem ipsum dolor sit amet consectetur, adipisicing elit. Molestias modi, facere sequi architecto minus eum iste dolores quod aut corrupti!" |
29 | | - }, |
30 | | - { |
31 | | - id: 5, |
32 | | - img: "https://random-image-pepebigotes.vercel.app/api/random-image", |
33 | | - tittle: "I am Creating a Card title", |
34 | | - para: " this is an cards paragraph Lorem ipsum dolor sit amet consectetur, adipisicing elit. Molestias modi, facere sequi architecto minus eum iste dolores quod aut corrupti!" |
35 | | - }, |
36 | | - { |
37 | | - id: 6, |
38 | | - img: "https://random-image-pepebigotes.vercel.app/api/random-image", |
39 | | - tittle: "I am Creating a Card title", |
40 | | - para: " this is an cards paragraph Lorem ipsum dolor sit amet consectetur, adipisicing elit. Molestias modi, facere sequi architecto minus eum iste dolores quod aut corrupti!" |
41 | | - }, |
42 | | - { |
43 | | - id: 7, |
44 | | - img: " https://random-image-pepebigotes.vercel.app/api/skeleton-random-image", |
45 | | - tittle: "I am Creating a Card title", |
46 | | - para: " this is an cards paragraph Lorem ipsum dolor sit amet consectetur, adipisicing elit. Molestias modi, facere sequi architecto minus eum iste dolores quod aut corrupti!" |
47 | | - }, |
48 | | - { |
49 | | - id: 8, |
50 | | - img: " https://random-image-pepebigotes.vercel.app/api/skeleton-random-image", |
51 | | - tittle: "I am Creating a Card title", |
52 | | - para: " this is an cards paragraph Lorem ipsum dolor sit amet consectetur, adipisicing elit. Molestias modi, facere sequi architecto minus eum iste dolores quod aut corrupti!" |
53 | | - }, |
54 | | - { |
55 | | - id: 9, |
56 | | - img: " https://random-image-pepebigotes.vercel.app/api/skeleton-random-image", |
57 | | - tittle: "I am Creating a Card title", |
58 | | - para: " this is an cards paragraph Lorem ipsum dolor sit amet consectetur, adipisicing elit. Molestias modi, facere sequi architecto minus eum iste dolores quod aut corrupti!" |
59 | | - }, |
60 | | - { |
61 | | - id: 10, |
62 | | - img: " https://random-image-pepebigotes.vercel.app/api/swag-wallpaper ", |
63 | | - tittle: "I am Creating a Card title", |
64 | | - para: " this is an cards paragraph Lorem ipsum dolor sit amet consectetur, adipisicing elit. Molestias modi, facere sequi architecto minus eum iste dolores quod aut corrupti!" |
65 | | - }, |
66 | | - { |
67 | | - id: 11, |
68 | | - img: " https://random-image-pepebigotes.vercel.app/api/swag-wallpaper ", |
69 | | - tittle: "I am Creating a Card title", |
70 | | - para: " this is an cards paragraph Lorem ipsum dolor sit amet consectetur, adipisicing elit. Molestias modi, facere sequi architecto minus eum iste dolores quod aut corrupti!" |
71 | | - }, |
72 | | - { |
73 | | - id: 11, |
74 | | - img: " https://random-image-pepebigotes.vercel.app/api/swag-wallpaper ", |
75 | | - tittle: "I am Creating a Card title", |
76 | | - para: " this is an cards paragraph Lorem ipsum dolor sit amet consectetur, adipisicing elit. Molestias modi, facere sequi architecto minus eum iste dolores quod aut corrupti!" |
77 | | - }, |
78 | | - ] |
| 7 | + const navigate = useNavigate(); |
| 8 | + const location = useLocation() |
| 9 | + const cardRefs = useRef({}) |
| 10 | + |
| 11 | + const handleReadPost = (id)=>{ |
| 12 | + navigate(`/post/${id}`) |
| 13 | + console.log(id) |
| 14 | + } |
| 15 | + |
| 16 | + useEffect(()=>{ |
| 17 | + const scrollToId = location.state?.scrollToId |
| 18 | + if (scrollToId && cardRefs.current[scrollToId]) { |
| 19 | + cardRefs.current[scrollToId].scrollIntoView({ behavior: 'smooth' }); |
| 20 | + } |
| 21 | + },[location]) |
79 | 22 |
|
80 | 23 | return ( |
81 | 24 | <> |
82 | 25 | <main> |
83 | | - <section className='grid sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-3 xl:grid-cols-4 2xl:grid-cols-5 gap-x-4 gap-y-5 p-5'> |
| 26 | + <section className='grid sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-3 xl:grid-cols-4 2xl:grid-cols-5 gap-x-4 gap-y-5 p-5 '> |
84 | 27 | { |
85 | 28 | cardsData.map((item) => ( |
86 | | - <article key={console.log(item.id)} className='bg-amber-200 p-4 ' > |
87 | | - <img className='bg-cover bg-center h-80 w-full' src={item.img} alt="" loading='lazy' /> |
| 29 | + <article ref={(el)=>(cardRefs.current[item.id]==el)} key={item.id} className='bg-amber-200 p-4 cursor-pointer hover:bg-amber-300 shadow-[0_0px_10px] ' > |
| 30 | + <img className='bg-cover bg-center h-80 w-full' src={item.img} alt="card-img" loading='lazy' /> |
88 | 31 | <h1 className='mt-2 mb-3 font-bold text-2xl '>{item.tittle}</h1> |
89 | 32 | <hr className='bg-black border-t-2' /> |
90 | | - <p className='mt-2 font-sans font-semibold' >{item.para}</p> |
91 | | - <button className='bg-sky-600 text-white px-2 py-2 rounded mt-6 font-black hover:bg-sky-700 cursor-pointer' >Read Post</button> |
| 33 | + <p className='mt-2 font-sans font-semibold' >{item.description}</p> |
| 34 | + <button onClick={()=>handleReadPost(item.id)} className='bg-sky-600 text-white px-2 py-2 rounded mt-6 font-black hover:bg-sky-700 cursor-pointer' >Read Post</button> |
92 | 35 | </article> |
93 | 36 | )) |
94 | 37 | } |
|
0 commit comments