1

I am learning react and code a function for image slider and change image title with every slide change.

but I want to add any other animation on this text only and repeat that same animation after every slide change.

I don't know how to do it can anyone help me please.

I provide live working demo link for your batter understanding.

https://codesandbox.io/live/a1dd4cecd03

import React, {useEffect, useState} from 'react'
import './Slider.css'
import BtnSlider from './BtnSlider'
import DataSlider from './DataSlider'

export default function Slider() {

    const [slideIndex, setSlideIndex] = useState(1)

    const nextSlide = () => {
        if(slideIndex !== DataSlider.length){
            setSlideIndex(slideIndex + 1)
        } 
        else if (slideIndex === DataSlider.length){
            setSlideIndex(1)
        }
    }

    const prevSlide = () => {
        if(slideIndex !== 1){
            setSlideIndex(slideIndex - 1)
        }
        else if (slideIndex === 1){
            setSlideIndex(DataSlider.length)
        }
    }

    useEffect(() => {
        const slideInterval = setInterval(() => {
           nextSlide()
        }, 10000);
        return () => clearInterval(slideInterval);
      }, [slideIndex]);

      
    const moveDot = index => {
        setSlideIndex(index)
    }



    return (
        <div className="container-slider">
                {DataSlider.map((obj, index) => {
                    return (
                        <div className='bgco'>
                            <div className='overlay_shadow'></div>
                            <div key={obj.id} className={slideIndex === index + 1 ? "slide active-anim" : "slide"}>

                                <div className='slider_name'>
                                    <span>{obj.title}</span>
                        
                                </div>

                                <img src={process.env.PUBLIC_URL + `/images/img${index + 1}.jpg`}/>

                            </div>
                        </div>
                    )
                })}

            <BtnSlider moveSlide={nextSlide} direction={"next"} />
            <BtnSlider moveSlide={prevSlide} direction={"prev"}/>

            <div className="container-dots">
                {Array.from({length: 5}).map((item, index) => (
                    <div 
                    onClick={() => moveDot(index + 1)}
                    className={slideIndex === index + 1 ? "dot active" : "dot"}
                    ></div>
                ))}
            </div>
        </div>
    )
}
Jenil
  • 31
  • 3

0 Answers0