react - 自定义计时器hook

67 阅读1分钟

原文地址:segmentfault.com/a/119000001…

    import { useEffect, useRef } from 'react'

    function useInterval(callback, delay) {
        const savedCallback = useRef();
        useEffect(() => {
            savedCallback.current = callback;
        })

        useEffect(() => {
            function tick() {
                savedCallback.current();
            }
            if (delay !== null) {
                const id = setInterval(tick, delay);
                return () => clearInterval(id)
            }
        }, [delay])
    }