Saltar al contenido principal

useLoading()

Ayuda a rastrear el estado de carga y de error de funciones asíncronas imperativas.

consejo

useSuspense() o useDLE() son mejores para endpoints GET/de lectura.

Uso​

import { useLoading, useController } from '@data-client/react';
import { PostResource } from './PostResource';
import PostForm from './PostForm';

export default function PostCreate() {
  const ctrl = useController();
  const navigate = useNavigate();
  const [handleSubmit, loading, error] = useLoading(
    async data => {
      const post = await ctrl.fetch(PostResource.getList.push, data);
      navigate(`/posts/${post.id}`);
    },
    [ctrl, navigate],
  );
  return (
    <PostForm onSubmit={handleSubmit} loading={loading} error={error} />
  );
}
Vista previa en vivo

Al igual que useCallback, recibe una lista de dependencias para garantizar la consistencia referencial de la función.

Eslint​

Configuración de Eslint

Como usamos la lista de dependencias, asegúrate de añadir useLoading a la configuración 'additionalHooks' de la regla react-hooks/exhaustive-deps si la usas.

{
"rules": {
// ...
"react-hooks/exhaustive-deps": ["warn", {
"additionalHooks": "(useLoading)"
}]
}
}

Tipos​

export default function useLoading<
F extends (...args: any) => Promise<any>,
>(func: F, deps: readonly any[] = []): [F, boolean, Error | undefined];

Ejemplos​

Paginación de Github​

Explora el ejemplo github-app

Más demos

Envío del formulario de comentarios de Github​

Explora el ejemplo github-app

Más demos