import React, { useState, useEffect, HTMLAttributes, ForwardRefRenderFunction, } from 'react'; interface ImageFaderProps extends HTMLAttributes { backgroundImages: string[]; rotationSpeed?: number; } const DEFAULT_ROTATION_SPEED = 6000; const ImageFader: ForwardRefRenderFunction = ( { backgroundImages, rotationSpeed = DEFAULT_ROTATION_SPEED, ...props }, ref ) => { const [activeIndex, setIndex] = useState(0); useEffect(() => { const interval = setInterval( () => setIndex((ai) => (ai + 1) % backgroundImages.length), rotationSpeed ); return () => { clearInterval(interval); }; }, [backgroundImages, rotationSpeed]); return (
{backgroundImages.map((imageUrl, i) => (
))}
); }; export default React.forwardRef(ImageFader);