import axios from "axios"; import { useEffect } from "react"; import { useState } from "react"; import { useInView } from "react-intersection-observer"; import { useInfiniteQuery } from "react-query"; import { Link } from "react-router-dom"; export default function RecipeScroll() { const { ref, inView } = useInView(); const [offset, setOffset] = useState(0); const { status, data, error, isFetching, isFetchingNextPage, isFetchingPreviousPage, fetchNextPage, fetchPreviousPage, hasNextPage, hasPreviousPage, } = useInfiniteQuery( "Recipes", async ({ pageParam = offset }) => { const { data } = await axios.get( `http://localhost:8080/api/recipe?limit=3&offset=${pageParam}` ); return data; }, { getNextPageParam: (lastPage) => lastPage.nextPage ?? undefined } ); useEffect(() => { if (inView) { setOffset(offset+3) fetchNextPage(); } }, [inView]); return (
Loading...
) : status === "error" ? ( Error: {error.message} ) : ( <>{recipe.name}
))}