useAsync
Gestiona el ciclo de vida completo de una función asíncrona — idle, pending, fulfilled y rejected — con cancelación automática y ejecución opcional al montar.
Firma
function useAsync<F extends (...args: any[]) => Promise<any>>(
fn: F,
options?: UseAsyncOptions<Awaited<ReturnType<F>>>
): UseAsyncReturn<F>
Opciones
| Propiedad | Tipo | Por defecto | Descripción |
|---|---|---|---|
immediate | boolean | false | Ejecuta fn automáticamente al montar |
onSuccess | (data: T) => void | — | Se llama cuando la promesa se resuelve |
onError | (error: unknown) => void | — | Se llama cuando la promesa es rechazada |
Valor de retorno
| Propiedad | Tipo | Descripción |
|---|---|---|
status | "idle" | "pending" | "fulfilled" | "rejected" | Estado actual del ciclo de vida |
data | T | undefined | Valor resuelto, o undefined |
error | unknown | undefined | Razón del rechazo, o undefined |
loading | boolean | true mientras status === "pending" |
trigger | (...args) => Promise<void> | Dispara manualmente la función asíncrona |
reset | () => void | Vuelve el estado a idle |
Comportamientos clave
- Se pasa un
AbortSignalcomo último argumento afn. Úsalo confetchpara cancelación automática. - Re-disparar mientras hay una request en vuelo cancela la anterior automáticamente.
- El controlador de abort se limpia al desmontar el componente.
Ejemplo interactivo
Loading playground...