useInterval
Reactive counter that increments on every interval tick
A thin wrapper around useIntervalFn that exposes a ReadonlyObservable<number> counter that increments on each tick.
Interval Counter
Counter increments every 200ms.
Interval fired
0
import { import useInterval
useInterval } from "@usels/web";
function function Component(): JSX.Element
Component() { const const counter: any
counter = import useInterval
useInterval(1000); return <JSX.IntrinsicElements.div: DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>
div>{const counter: any
counter.any
get()}</JSX.IntrinsicElements.div: DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>
div>; // counter.get() → 0 initially, then 1, 2, 3... every second}import { createInterval } from "@usels/web";
function Component() { "use scope" const counter = createInterval(1000); return <div>{counter.get()}</div>; // counter.get() → 0 initially, then 1, 2, 3... every second}With callback
Section titled “With callback”import { useInterval } from "@usels/web";
function Component() { useInterval(1000, { callback: (count) => console.log("tick:", count), });}import { createInterval } from "@usels/web";
function Component() { "use scope" createInterval(1000, { callback: (count) => console.log("tick:", count), });}With pause/resume/reset controls
Section titled “With pause/resume/reset controls”import { useInterval } from "@usels/web";
function Component() { const { counter$, reset, isActive$, pause, resume } = useInterval(1000, { controls: true, });
// pause() → stops ticking // resume() → restarts // reset() → counter → 0}import { createInterval } from "@usels/web";
function Component() { "use scope" const { counter$, reset, isActive$, pause, resume } = createInterval(1000, { controls: true, });
// pause() → stops ticking // resume() → restarts // reset() → counter → 0}Manual start (immediate: false)
Section titled “Manual start (immediate: false)”import { useInterval } from "@usels/web";
function Component() { const { counter$, resume } = useInterval(1000, { controls: true, immediate: false, });
// resume() → start manually}import { createInterval } from "@usels/web";
function Component() { "use scope" const { counter$, resume } = createInterval(1000, { controls: true, immediate: false, });
// resume() → start manually}Reactive interval
Section titled “Reactive interval”import { observable, useInterval } from "@usels/web";
function Component() { const ms$ = observable(1000); const counter = useInterval(ms$);
// ms$.set(500) → restarts with 500ms period}import { createInterval, observable } from "@usels/web";
function Component() { "use scope" const ms$ = observable(1000); const counter = createInterval(ms$);
// ms$.set(500) → restarts with 500ms period}Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
interval | MaybeObservable<number> | - |
options | IntervalOptions & { controls: true; } | - |
IntervalOptions
Section titled “IntervalOptions”Returns
Section titled “Returns”IntervalReturn & Pausable
| Name | Type | Description |
|---|---|---|
counter$ | ObservablePrimitive<number> | - |
reset | Fn | - |
isActive$ | ReadonlyObservable<boolean> | - |
pause | Fn | - |
resume | Fn | - |