UseAbortController
guarahooks/use-abort-controllerFreeHook
Provides AbortController functionality for canceling asynchronous operations.
Install it
npx shadcn@latest add https://guarahooks.com/r/use-abort-controller.jsonSource
1'use client';23import { useCallback, useEffect, useRef } from 'react';45interface UseAbortControllerOptions {6 abortOnUnmount?: boolean;7}89interface UseAbortControllerReturn {10 controller: AbortController;11 signal: AbortSignal;12 aborted: boolean;13 abort: (reason?: string) => void;14 reset: () => void;15 fetch: (input: RequestInfo | URL, init?: RequestInit) => Promise<Response>;16}1718export function useAbortController(19 options: UseAbortControllerOptions = {},20): UseAbortControllerReturn {21 const { abortOnUnmount = true } = options;2223 const controllerRef = useRef<AbortController>(new AbortController());2425 const abort = useCallback((reason?: string) => {26 if (!controllerRef.current.signal.aborted) {27 controllerRef.current.abort(reason);28 }29 }, []);3031 const reset = useCallback(() => {32 if (!controllerRef.current.signal.aborted) {33 controllerRef.current.abort('Reset');34 }35 controllerRef.current = new AbortController();36 }, []);3738 const abortableFetch = useCallback(39 (input: RequestInfo | URL, init?: RequestInit): Promise<Response> => {40 return fetch(input, {41 ...init,42 signal: controllerRef.current.signal,43 });44 },45 [],46 );4748 // Abort on unmount if option is enabled49 useEffect(() => {50 const currentController = controllerRef.current;5152 return () => {53 if (abortOnUnmount && !currentController.signal.aborted) {54 currentController.abort('Component unmounted');55 }56 };57 }, [abortOnUnmount]);5859 return {60 controller: controllerRef.current,61 signal: controllerRef.current.signal,62 aborted: controllerRef.current.signal.aborted,63 abort,64 reset,65 fetch: abortableFetch,66 };67}
Files it writes
More from guarahooks
All 100 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| UseArrayStateuse-array-state | guarahooks | Hooks | Free | no deps | |
| UseAxiosuse-axios | guarahooks | Hooks | Free | no deps | |
| UseBatteryStatususe-battery-status | guarahooks | Hooks | Free | no deps | |
| UseBetterAuthuse-better-auth | guarahooks | Hooks | Free | no deps | |
| UseClickOutsideuse-click-outside | guarahooks | Hooks | Free | no deps | |
| UseConfirmuse-confirm | guarahooks | Hooks | Free | no deps | |
| UseCookieuse-cookie | guarahooks | Hooks | Free | no deps | |
| UseCopyToClipboarduse-copy-to-clipboard | guarahooks | Hooks | Free | no deps |
