Skip to main content

useInterval

Run a callback repeatedly at a fixed interval.

API​

function useInterval(
callback: () => void,
interval?: number,
): [start: () => void, cancel: () => void];

Parameters:

  • callback: A function to be called at intervals.
  • interval: The interval, in milliseconds.

Results:

  • start: Starts the loop. It clears any previous loop first.
  • cancel: Cancels the loop.

Notes​

  • The loop is cancelled on unmount.

Example​

The following example shows an elapsed-seconds clock that starts automatically on mount.

Elapsed seconds: 0
import { useState } from "react";
import { useInterval, useMount } from "@lilib/hooks";

function Example() {
const [elapsed, setElapsed] = useState(0);
const [start, cancel] = useInterval(() => {
setElapsed((elapsed) => elapsed + 1);
}, 1000);

// Start the clock automatically on mount.
useMount(start);

return (
<>
<div>
<button onClick={cancel}>Pause</button> <button onClick={start}>Resume</button>
</div>
<div>Elapsed seconds: {elapsed}</div>
</>
);
}

export default Example;