Skip to main content

useThrottle

/**
* Implement a useThrottle hook that
* delays value state updates to happen at most every interval-millisecond intervals.
*/
/**
* @template T
* @param {T} value
* @param {number} interval
*/

import {useEffect, useState} from 'react';

export default function useThrottle(value, interval = 500) {
const [throttlePosition, setThrottlePosition] = useState(value);

useEffect(() => {
const timer = setTimeout(() => {
setThrottlePosition(value);
}, interval);

return () => {
clearTimeout(timer);
};
}, [value, interval]);

return throttlePosition;
}