I was trying to create a list of movies like in Netflix, in which left arrow appears when i slide it to the right. And left arrow disappears when list gets back to original position.
Why is the value of slideNumber remaining same even after i update it using setSlideNumber?
Image of the lists i am trying to make
function List() {
const [slideNumber, setSlideNumber] = useState(0); //USE STATE HOOK
const [isMoved, setIsMoved] = useState(false);
const listRef = useRef();
const handleClick = (direction) => {
setIsMoved(true);
let distance = listRef.current.getBoundingClientRect().x -50;
if(direction === "right" && slideNumber<5){
setSlideNumber(slideNumber+1);
listRef.current.style.transform = `translateX(${distance - 230}px)`
}
if(direction === "left" && slideNumber>0){
console.log(slideNumber); //THIS LINE
setSlideNumber(slideNumber-1);
console.log(slideNumber); //AND THIS LINE GIVES SAME OUTPUT
if(slideNumber===1){
setIsMoved(false);
}
listRef.current.style.transform = `translateX(${distance + 230}px)`
}
}
return (
<div className='list'>
<span className="listTitle">Continue Watching</span>
<div className="wrapper">
<ArrowBackIosOutlinedIcon
className='sliderArrow left'
onClick = {()=>handleClick("left")}
style={{display: !isMoved && "none"}}
/>
<div className="container" ref={listRef}>
<ListItem />
<ListItem />
<ListItem />
<ListItem />
<ListItem />
<ListItem />
<ListItem />
<ListItem />
<ListItem />
<ListItem />
</div>
<ArrowForwardIosOutlinedIcon className='sliderArrow right' onClick = {()=>handleClick("right")}/>
</div>
</div>
);
}