Saltar al contenido principal

useCancelling()

Construye un Endpoint que cancela el fetch cada vez que cambian los parámetros

Aborta la petición en curso si los parámetros cambian.

Uso​

import { useSuspense, useCancelling } from '@data-client/react';
import { TodoResource } from './resources/Todo';

export default function TodoDetail({ id }: { id: number }) {
  const todo = useSuspense(useCancelling(TodoResource.get, { id }), {
    id,
  });
  return <div>{todo.title}</div>;
}
Resultado
Store▶

Prueba a hacer clic en » muy rápido. Si incrementas antes de que se resuelva la petición, esta se cancelará y no deberías ver resultados en el store.

Advertencia

Ten cuidado al usar esto con muchos componentes independientes que obtienen los mismos argumentos (par Endpoint/params) con useSuspense(). Esta solución aborta los fetch por componente, lo que significa que podrías terminar cancelando un fetch que otro componente todavía necesita.

Tipos​

function useCancelling<
E extends EndpointInterface & {
extend: (o: { signal?: AbortSignal }) => any;
},
>(endpoint: E, ...args: readonly [...Parameters<E>] | readonly [null]): E {