import React, { useEffect, useState } from 'react'
import styles from './ImageChanging.module.css'
import ArrowLeftIcon from '@mui/icons-material/ArrowLeft';
import ArrowRightIcon from '@mui/icons-material/ArrowRight';
const img1 = require('../../assets/bg1.jpg')
const img2 = require('../../assets/bg2.jpg')
const img3 = require('../../assets/bg3.jpg')
export default function ImageChanging() {
let imageCollection = [img1, img2, img3]
// state
let [displayImageId,setDisplayImageId] = useState(0)
let [displayImage,setDisplayImage] = useState(imageCollection[displayImageId])
// try to reload
useEffect(() => {
setInterval(() => {
changeBg()
}, 8000)
}, [displayImage])
function changeBg() {
console.log(displayImage,"we are seeing the Starting Image")
if (displayImage < imageCollection.length - 1 ) {
setDisplayImageId((prevValue) => prevValue + 1)
setDisplayImage(imageCollection[displayImageId])
}
else {
console.log("we re inside ELse")
setDisplayImageId(0)
setDisplayImage(imageCollection[displayImageId])
}
}
function clickNextImage () {
console.log("U have Clicked Next Image")
if(displayImage == 3 ){
return
}
setDisplayImageId(displayImage + 1)
setDisplayImage(imageCollection[displayImageId])
}
function clickPrevImage() {
console.log("You have Clicked Previous Image")
if(displayImage == 0){
return
}
setDisplayImageId(displayImage - 1)
setDisplayImage(imageCollection[displayImageId])
}
return (
<div className={styles.ImageContainer}>
<ArrowLeftIcon className={styles.IconStyle} onClick={clickPrevImage}/>
<p>{displayImage}</p>
<img className={styles.Image} src={displayImage} />
<ArrowRightIcon className={[styles.IconStyle,styles.IconStyleRight]} onClick={clickNextImage}/>
</div>
)
}
i have imported all my images in my js File
I am running SetInterval inside UseEffect hook , to Change the image in my component
I am getting sometimes displayImageId as 3 and my images are flickring some Times
can Anyone Suggest why Id is gong to 3 what i am doing Wrong