qol-hooks
Version:
A collection of React hooks to improve the quality of life of developers.
28 lines (27 loc) • 929 B
JavaScript
import { useEffect, useRef } from "react";
/**
* @description A hook to call a function after a specified delay
* @param {() => void} callback The function to call after the specified delay
* @param {number | null | undefined} delay The delay in milliseconds
*
* @example```tsx
* useTimeout(() => console.log("Hello, World!"), 1000); // Logs "Hello, World!" after 1 second
* ```
*/
function useTimeout(callback, delay) {
const savedCallback = useRef();
useEffect(() => {
savedCallback.current = callback;
}, [callback]);
useEffect(() => {
function tick() {
var _a;
(_a = savedCallback.current) === null || _a === void 0 ? void 0 : _a.call(savedCallback);
}
if (delay !== null && delay !== undefined) {
const id = setTimeout(tick, delay);
return () => clearTimeout(id);
}
}, [delay]);
}
export default useTimeout;