From bbb912479b2db21cf11d6375dd703609ee94d956 Mon Sep 17 00:00:00 2001 From: ajnart Date: Mon, 6 Jun 2022 15:02:41 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=AA=9D=20AdduseSetSafeInterval=20hook?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/tools/hooks/useSetSafeInterval.tsx | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 src/tools/hooks/useSetSafeInterval.tsx diff --git a/src/tools/hooks/useSetSafeInterval.tsx b/src/tools/hooks/useSetSafeInterval.tsx new file mode 100644 index 000000000..4bedbc15e --- /dev/null +++ b/src/tools/hooks/useSetSafeInterval.tsx @@ -0,0 +1,22 @@ +import { useEffect, useRef } from 'react'; + +export function useSetSafeInterval() { + const timers = useRef([]); + + function setSafeInterval(callback: () => void, delay: number) { + const newInterval = setInterval(callback, delay); + timers.current.push(newInterval); + return newInterval; + } + + useEffect( + () => () => { + timers.current.forEach((t) => { + clearInterval(t); + }); + }, + [] + ); + + return setSafeInterval; +}