aboutsummaryrefslogtreecommitdiff
path: root/modern/src/reactHelper.js
diff options
context:
space:
mode:
Diffstat (limited to 'modern/src/reactHelper.js')
-rw-r--r--modern/src/reactHelper.js24
1 files changed, 24 insertions, 0 deletions
diff --git a/modern/src/reactHelper.js b/modern/src/reactHelper.js
index 7503360..0e80596 100644
--- a/modern/src/reactHelper.js
+++ b/modern/src/reactHelper.js
@@ -20,3 +20,27 @@ export const useEffectAsync = (effect, deps) => {
};
}, deps);
};
+
+// Source: https://overreacted.io/making-setinterval-declarative-with-react-hooks/
+export const useInterval = (callback, delay) => {
+ const ref = useRef();
+ let id = null;
+
+ // Remember the latest callback.
+ useEffect(() => {
+ ref.current = callback;
+ }, [callback]);
+
+ // Set up the interval.
+ useEffect(() => {
+ function tick() {
+ ref.current();
+ }
+ if (delay !== null) {
+ id = setInterval(tick, delay);
+ return () => clearInterval(id);
+ }
+ }, [delay]);
+
+ return id;
+}