From 65220cc8db0d7c63f49627526466d54969958fe1 Mon Sep 17 00:00:00 2001 From: Nick Van Doorn Date: Fri, 29 Mar 2019 00:35:56 -0700 Subject: Init commit --- src/use-interval.js | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 src/use-interval.js (limited to 'src/use-interval.js') diff --git a/src/use-interval.js b/src/use-interval.js new file mode 100644 index 0000000..5ca3305 --- /dev/null +++ b/src/use-interval.js @@ -0,0 +1,29 @@ +// lifted from here: +// https://overreacted.io/making-setinterval-declarative-with-react-hooks/ +import React, { useState, useEffect, useRef } from 'react' + +export const useInterval = (callback, delay) => { + const savedCallback = useRef() + + // Remember the latest callback. + useEffect( + () => { + savedCallback.current = callback + }, + [callback] + ) + + // Set up the interval. + useEffect( + () => { + function tick() { + savedCallback.current() + } + if (delay !== null) { + let id = setInterval(tick, delay) + return () => clearInterval(id) + } + }, + [delay] + ) +} -- cgit v1.2.3