useAsyncEffect
hookas/use-async-effectFreeHook
A hook to run an async effect
Install it
npx shadcn@latest add https://hookas.letstri.dev/r/use-async-effect.jsonSource
1'use client'23import * as React from 'react'45export function useAsyncEffect(6 effect: () => Promise<void | (() => Promise<void> | void)>,7 deps: React.DependencyList = [],8) {9 const destroyRef = React.useRef<void | (() => Promise<void> | void) | undefined>(undefined)1011 const effectEvent = React.useEffectEvent(effect)1213 React.useEffect(() => {14 const e = effectEvent()1516 async function execute() {17 destroyRef.current = await e18 }1920 execute()2122 return () => {23 if (typeof destroyRef.current === 'function')24 destroyRef.current()25 }26 // eslint-disable-next-line react-hooks/exhaustive-deps27 }, deps)28}
Files it writes
More from hookas
All 30 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| useClickOutsideuse-click-outside | hookas | Hooks | Free | no deps | |
| useDebounceCallbackuse-debounced-callback | hookas | Hooks | Free | no deps | |
| useDebounceMemouse-debounced-memo | hookas | Hooks | Free | no deps | |
| useDebounceStateuse-debounced-state | hookas | Hooks | Free | no deps | |
| useElementSizeuse-element-size | hookas | Hooks | Free | no deps | |
| useFullscreenuse-fullscreen | hookas | Hooks | Free | no deps | |
| useIntervaluse-interval | hookas | Hooks | Free | no deps | |
| useIsInViewportuse-is-in-viewport | hookas | Hooks | Free | no deps |
