useInfiniteQuery<T, TPageParam> function

InfiniteQueryResult<T> useInfiniteQuery<T, TPageParam>({
  1. required String key,
  2. required Future<T> fetcher(
    1. TPageParam?
    ),
  3. required TPageParam? getNextPageParam(
    1. T lastPage,
    2. List<T> allPages
    ),
})

A hook to use an infinite query.

Implementation

InfiniteQueryResult<T> useInfiniteQuery<T, TPageParam>({
  required String key,
  required Future<T> Function(TPageParam?) fetcher,
  required TPageParam? Function(T lastPage, List<T> allPages) getNextPageParam,
}) {
  final queryClient = useQueryClient();
  final controller = useMemoized(
    () => queryClient.cache.buildInfinite<T, TPageParam>(key),
    [key, queryClient],
  );

  final state = useValueListenable(controller);

  useEffect(() {
    controller.fetch(
      fetcher: fetcher,
      getNextPageParam: getNextPageParam,
    );
    return null;
  }, [controller]);

  return InfiniteQueryResult(state, controller.fetchNextPage);
}