En la página donde quiero usar useInfiniteQuery
const { data, error, fetchNextPage, hasNextPage, isFetching, isFetchingNextPage, status } = useInfiniteQuery( ['posts', searchState], ({ pageParam = 1 }) => post.search({ ...searchState, pageParam }), { getNextPageParam: (lastPage, pages) => { if (pages.length < 2) return pages.length + 1; else return undefined; }, }, );Esta es mi función axios personalizada:
export const post = { search: async (params: { keyword: string; sort: string; region: string; pageParam: number }) => { const { keyword, sort, region, pageParam } = params; const sortValue = SortType[sort as keyof typeof SortType]; const url = `/post/search?keyword=${keyword}&page=${pageParam}&filter=${sortValue}®ion=${region}`; console.log(url); const res = await client.get(url); return res; }, }res en post. función de búsqueda devuelve:
{"status":200,"message":"search success","data":{"posts":[],"pageCount":0}}Y me gustaría usar pageCount como una condición para la función getNextPageParam, hasNextPage value.
Lo que realmente quiero preguntar es cómo puedo usar el valor de pageCount en el siguiente código:
getNextPageParam: (lastPage, pages) => {Para cualquiera que no esté acostumbrado a usar react-query. Simplemente puede buscar los res.data usando lastPage
const { data, error, fetchNextPage, hasNextPage, isFetching, isFetchingNextPage, status } = useInfiniteQuery( ['posts', searchState], async ({ pageParam = 1 }) => (await post.search({ searchState, pageParam })).data, { getNextPageParam: (lastPage, allPages) => { if (lastPage === undefined) return undefined; else return allPages.length < lastPage.pageCount && allPages.length + 1; }, }, );