useDebounce rerender optimization

This commit is contained in:
Benjamin Makus 2019-02-02 13:40:10 +01:00
parent 454012387b
commit cab921fdaa

View File

@ -1,13 +1,13 @@
import { useState, useEffect } from 'react';
import { useEffect } from 'react';
const useDebounce = (fn: () => any, ms: number = 0, args: Array<any> = []) => {
const [timeout, setTimeoutVar] = useState<any>(null);
useEffect(() => {
// if args change then clear timeout
clearTimeout(timeout);
const t = setTimeout(fn.bind(null, args), ms);
setTimeoutVar(t);
let handle = setTimeout(fn.bind(null, args), ms);
return () => {
// if args change then clear timeout
clearTimeout(handle);
}
}, args);
};