UNPKG

@thibault.sh/hooks

Version:

A comprehensive collection of React hooks for browser storage, UI interactions, and more

1 lines 1.26 kB
{"version":3,"sources":["../src/hooks/useInterval.ts"],"names":["useInterval","callback","delay","savedCallback","useRef","useEffect","id"],"mappings":"qCAOO,SAASA,CAAYC,CAAAA,CAAAA,CAAsBC,CAAsB,CAAA,CACtE,IAAMC,CAAAA,CAAgBC,OAAOH,CAAQ,CAAA,CAErCI,SAAU,CAAA,IAAM,CACdF,CAAAA,CAAc,QAAUF,EAC1B,CAAA,CAAG,CAACA,CAAQ,CAAC,CAAA,CAEbI,UAAU,IAAM,CACd,GAAIH,CAAAA,GAAU,IAAM,CAAA,OAMpB,IAAMI,CAAK,CAAA,WAAA,CAJE,IAAM,CACjBH,CAAc,CAAA,OAAA,GAChB,CAE6BD,CAAAA,CAAK,CAClC,CAAA,OAAO,IAAM,aAAA,CAAcI,CAAE,CAC/B,CAAG,CAAA,CAACJ,CAAK,CAAC,EACZ","file":"useInterval.mjs","sourcesContent":["import { useEffect, useRef } from \"react\";\n\n/**\n * Hook that sets up an interval that is properly cleaned up when the component unmounts\n * @param callback - Function to call on each interval\n * @param delay - Delay in milliseconds (null to pause)\n */\nexport function useInterval(callback: () => void, delay: number | null) {\n const savedCallback = useRef(callback);\n\n useEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n\n useEffect(() => {\n if (delay === null) return;\n\n const tick = () => {\n savedCallback.current();\n };\n\n const id = setInterval(tick, delay);\n return () => clearInterval(id);\n }, [delay]);\n} "]}