useCounter

Tags:

A React hook that provides a counter with increment, decrement, and reset functionalities.

Scenes

  • Number computation scenes: Offers functionalities to increment, decrement, set, get, and reset the counter
  • UI interaction scenes: Implements the dynamic update and display of quantities on the user interface, such as the number of products in a shopping cart, carousel switching
  • Limiting value range scenes: Applies maximum and minimum value restrictions to the number (it is recommended to use the more semantically clear useClamp)
  • ...

Demo

Source
Count:
1
Min:
0
Max:
20
Initial:
1

Usage

const [count, actions] = useCounter(20) const [count, actions, couterState] = useCounter(20, { min: 1, max: 100 }) // Increment the counter actions.inc() actions.inc(2) // Decrement the counter actions.dec() actions.dec(4) // Set the counter to a specific value actions.set(10) // Reset the counter to the initial value (or reset the initial value as well) actions.reset() actions.reset(12) // Get the value of the counter, the value is count acitons.get()

Source

Click links below to view source on GitHub.

API

const [count, actions, couterState] = useCounter(initialCount, options)

InitialCount

A number type of initial value.

Options

export type UseCounterOptions = { /** * The maximum value of the counter */ max?: number /** * The minimum value of the counter */ min?: number }

Returns

export interface UseCounterReturnsAction { /** * Increment the counter */ inc: (delta?: number) => void /** * Decrement the counter */ dec: (delta?: number) => void /** * Set the counter */ set: (value: number) => void /** * Get the counter */ get(): number /** * Reset the counter */ reset: (n?: number) => void /** * Set the counter, use React's `setState` style, supports function updater to avoid expired value * * @since 1.9.0 */ setState: (state: SetStateAction<number>) => void } export interface UseCounterState { /** * The value of the counter */ count: number /** * The maximum value of the counter */ max: number /** * The minimum value of the counter */ min: number /** * The initial value of the counter */ initialCount: number } export type UseCounterReturns = readonly [ /** * The count state of the counter */ number, /** * Functions to control the counter */ UseCounterReturnsAction, /** * The full internal state of the counter */ UseCounterState, ]