React Useeffect() State Isn't Updated
Solution 1:
Your state will get updated but the issue here is that you are checking for state updates by calling console.log(memes)
directly after setMemes(data.data)
, but the state of a component is updated asynchronously which means setMemes
is an asynchronous function.
If you want to do something with memes
(except updating it) after it has been updated use another useEffect
hook and define memes
as its dependency.
The infinite loop is happening because you are defining memes
as dependency of the useEffect
and also updating memes
inside the same effect. Therefore this useEffect
is constantly triggering itself.
Solution 2:
You needlessly create an infinite loop by adding memes to the effect dependency, log it in the component function instead:
useEffect(() => {
getMemes(currentPage).then((data) => {
setEndPage(data.pagination.totalPages);
setMemes(data.data);
console.log('api data:',data);
});
}, []);
console.log('memes:',memes);
console.log('end page:',endPage);
Solution 3:
It get stacked in infinite loop because the closure you passed to the function then set the state of memes, that trigger the useEffect hook, because it's listening the state of the property memes. You can pass currentPage in the array. Try using a loading state.
Post a Comment for "React Useeffect() State Isn't Updated"