Skip to content

useProgress

Hook that creates a lightweight progress bar

time
medium
test coverage
Last changed: 15 days ago

Installation

Library
CLI
Manual
typescript
import { useProgress } from '@siberiacancode/reactuse';

Usage

typescript
const { value, active, start, done, inc, set, remove } = useProgress(0.2);
## Demo

Api

Parameters

NameTypeDefaultNote
initialProgress?number-Initial progress value in range 0..1
options.active?boolean-Controls progress externally (true -> start, false -> done)
options.maximum?number0.95Maximum value when progress starts
options.speed?number250Auto increment interval in milliseconds
options.rate?number0.02Additional random increment amount on each tick
options.delay?number250Delay before reset to null after done

Returns

UseProgressReturn

Type declaration

typescript
export interface UseProgressOptions {
  /** Delay before reset to null after done */
  delay?: number;
  /** Start progress immediately */
  immediately?: boolean;
  /** Maximum progress value */
  maximum?: number;
  /** Additional random amount for each auto increment */
  rate?: number;
  /** Auto-increment frequency in milliseconds */
  speed?: number;
}

export interface UseProgressReturn {
  /** Whether progress is currently active */
  active: boolean;
  /** Current progress value in range 0..1, null means hidden */
  value: number;
  /** Complete progress to 100% */
  done: (force?: boolean) => number | null;
  /** Increment progress with easing behavior */
  inc: (amount?: number) => number | null;
  /** Remove progress and stop timers */
  remove: () => void;
  /** Start progress and auto incrementing */
  start: (from?: number | null) => number;
}

Source

SourceDemo

Contributors

D
debabin
debabin

Released under the MIT License.