diff options
author | Nick Van Doorn <vandoorn.nick@gmail.com> | 2019-03-29 00:35:56 -0700 |
---|---|---|
committer | Nick Van Doorn <vandoorn.nick@gmail.com> | 2019-03-29 00:35:56 -0700 |
commit | 65220cc8db0d7c63f49627526466d54969958fe1 (patch) | |
tree | e2989cb16576f177e60f75f9a733487adfd868f5 /src/use-interval.js | |
parent | 51687fe7a2de2d4ed2800af46f9b6a9ac6c929ee (diff) |
Init commit
Diffstat (limited to 'src/use-interval.js')
-rw-r--r-- | src/use-interval.js | 29 |
1 files changed, 29 insertions, 0 deletions
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] + ) +} |