You are viewing a single comment's thread. Return to all comments →
Here is the cleaned up solution:
import React, { useEffect, useState } from "react"; function Slides({ slides }) { const [index, setIndex] = useState(0); const [disableRestart, setDisableRestart] = useState(true); const [disableNext, setDisableNext] = useState(false); const [disablePrev, setDisablePrev] = useState(true); const slidesLength = slides?.length - 1; const slideTitle = slides?.[index]?.title; const slideText = slides?.[index]?.text; useEffect(() => { setDisableRestart(index === 0); setDisablePrev(index === 0); setDisableNext(index === slidesLength); }, [index, slidesLength]); const handleRestart = () => { if (index > 0) { setIndex(0) } } const handleNextSlide = () => { if (index < slidesLength) { setIndex(prev => prev + 1) } } const handlePrevSlide = () => { if (index <= slidesLength && index !== 0) { setIndex(prev => prev - 1) } } return ( <div> <div id="navigation" className="text-center"> <button data-testid="button-restart" className="small outlined" onClick={() => handleRestart()} disabled={disableRestart}> Restart </button> <button data-testid="button-prev" className="small" onClick={() => handlePrevSlide()} disabled={disablePrev}> Prev </button> <button data-testid="button-next" className="small" onClick={() => handleNextSlide()} disabled={disableNext}> Next </button> </div> <div id="slide" className="card text-center"> <h1 data-testid="title">{slideTitle}</h1> <p data-testid="text">{slideText}</p> </div> </div> ); } export default Slides;
Seems like cookies are disabled on this browser, please enable them to open this website
Slideshow
You are viewing a single comment's thread. Return to all comments →
Here is the cleaned up solution: