useLazyQuery<T> function

QueryResult<T> useLazyQuery<T>({
  1. required QueryKey key,
  2. required Future<T> queryFn(),
  3. required Ref<bool> enabled,
  4. QueryOptions<T>? options,
})

Create a disabled query that only fetches when enabled.

final enabled = ref(false);
final user = useLazyQuery(
  key: ['user', userId],
  queryFn: () => api.getUser(userId),
  enabled: enabled,
);

// Later, enable the query
enabled.value = true;  // Triggers fetch

Implementation

QueryResult<T> useLazyQuery<T>({
  required QueryKey key,
  required Future<T> Function() queryFn,
  required Ref<bool> enabled,
  QueryOptions<T>? options,
}) {
  return useQuery(
    key: key,
    queryFn: queryFn,
    options: QueryOptions<T>(
      staleTime: options?.staleTime,
      gcTime: options?.gcTime,
      retry: options?.retry,
      retryDelay: options?.retryDelay,
      enabled: enabled(),
      refetchOnMount: options?.refetchOnMount ?? true,
      refetchInterval: options?.refetchInterval,
      onSuccess: options?.onSuccess,
      onError: options?.onError,
      onSettled: options?.onSettled,
      select: options?.select,
      placeholderData: options?.placeholderData,
      initialData: options?.initialData,
    ),
  );
}