| Server IP : 193.146.211.90 / Your IP : 10.85.6.55 Web Server : Apache System : Linux wordpress-gti-69dcdb54f7-n4wdq 6.11.8-arch1-2 #1 SMP PREEMPT_DYNAMIC Fri, 15 Nov 2024 15:35:07 +0000 x86_64 User : 1001 ( 1001) PHP Version : 8.2.25 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : OFF | Perl : ON | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /bitnami/wordpress/wp-content/themes/astra/admin/assets/hooks/ |
Upload File : |
import { useEffect } from 'react';
import { debounce } from '@astra-utils/helpers';
/**
* A hook that wraps a callback function with a debounce effect.
*
* This hook is designed to delay the execution of a function until after a specified delay.
* It's particularly useful for handling events that occur rapidly, such as typing in a text input.
*
* @param {Function} callback - The function to debounce.
* @param {number} delay - The delay in milliseconds before the function is executed.
* @param {Array} dependencies - An array of dependencies that trigger the effect.
*/
function useDebounceEffect( callback, delay, dependencies ) {
useEffect( () => {
const debouncedCallback = debounce( callback, delay );
debouncedCallback();
// Cleanup on unmount or when dependencies change.
return () => debouncedCallback.cancel && debouncedCallback.cancel();
}, [ callback, delay, ...dependencies ] );
}
export default useDebounceEffect;