|
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