blob: 5ca330578b146e29c693f9db3e33c781df161972 (
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 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]
)
}
|