Imagine I have an array of objects like this:
const items = [
{name: "item 0"},
{name: "item 1"},
{name: "item 2"}
]
And a component like this:
const [currentItemIndex, setCurrentItemIndex] = useState(0)
setInterval(function () {
if (currentItemIndex < 3) {
setCurrentItemIndex(currentItemIndex + 1);
} else {
clearInterval();
}
}, 5000);
return (
<div>
<p> {items[currentItemIndex].name} <p>
</div>
)
I want to update currentItemIndex
every 5 seconds so the div
shows next item, and if it reaches the end, it should start over: 0, 1, 2, 0, 1, 2, 0, 1, 2 ...
.
The problem is: it loops correctly the first time, but after reaching the end, it shows the first item for a fraction of a second and then goes to the last item: 0, 1, 2, 0 (really quick to) 2
.
What I'm doing wrong?
I searched for this, but every article is talking about "how to prevent infinite loops", not "how to use them"!