Why is my state of "hasPages" being ignored?
Answered
noli posted this in #help-forum
noliOP
useEffect(() => {const intersectionObserver = new IntersectionObserver(entries => {
console.log(hasPages)
if (entries[0].isIntersecting && loading == false && hasPages == true) {
loading =true;
debounce(fetchNextObjekts, 1000);
}loading=false;});
intersectionObserver.observe(document.querySelector(".more")); })by default
const [hasPages, setHasPages] = useState(true)fetchNextObjekts
(fetchobjects is a function that selects data)
const fetchNextObjekts = async () => {const pageNumber = pagesLoaded+1;
fetchobjekts(pageNumber, userid, batchSize).then(res => {
console.log(res.length)
if (res.length == 0) {
setHasPages(false)
}
setObjekts([...objekts, ...res]);
setPagesLoaded(pageNumber);
loading = false;
});}Answered by Ray
I think you missed
hasPages in the dependency arrayuseEffect(() => {}, [hasPages])1 Reply
@noli useEffect(() => {const intersectionObserver = new IntersectionObserver(entries => {
console.log(hasPages)
if (entries[0].isIntersecting && loading == false && hasPages == true) {
loading =true;
debounce(fetchNextObjekts, 1000);
}loading=false;});
intersectionObserver.observe(document.querySelector(".more")); })
by default
const [hasPages, setHasPages] = useState(true)
fetchNextObjekts
(fetchobjects is a function that selects data)
const fetchNextObjekts = async () => {const pageNumber = pagesLoaded+1;
fetchobjekts(pageNumber, userid, batchSize).then(res => {
console.log(res.length)
if (res.length == 0) {
setHasPages(false)
}
setObjekts([...objekts, ...res]);
setPagesLoaded(pageNumber);
loading = false;
});}
I think you missed
hasPages in the dependency arrayuseEffect(() => {}, [hasPages])Answer