blob: 9913e2e1a890b5a881a00cf37aab92537c0b3c1d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
// lifted from here:
// https://overreacted.io/making-setinterval-declarative-with-react-hooks/
import { 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]
)
}
|