useCounter

Tags:

一个提供包含增加、减少和重置功能的计数器的 React Hook。

场景

  • 处理数量计算场景: 提供增加、减少、设置、获取、重置计数器的功能
  • 界面交互场景: 实现用户界面上数量的动态更新和显示,如购物车商品数量、轮播图切换
  • 限制数值范围场景: 对数值进行最大值和最小值的限制 (建议使用更加语意化的 useClamp)
  • ...

演示

源码
Count:
1
Min:
0
Max:
20
Initial:
1

用法

const [count, actions] = useCounter(20) const [count, actions, couterState] = useCounter(20, { min: 1, max: 100 }) // 增加计数器 actions.inc() actions.inc(2) // 减少计数器 actions.dec() actions.dec(4) // 设置计数器为指定值 actions.set(10) // 重置计数器为初始值(或同时重设初始值) actions.reset() actions.reset(12) // 获取计数器的值,值为 count acitons.get()

源码

点击下方链接跳转 GitHub 查看源代码。

API

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

初始值 InitialCount

一个 number 类型的初始值。

选项 Options

export type UseCounterOptions = { /** * 计数器的最大值 */ max?: number /** * 计数器的最小值 */ min?: number }

返回值

export interface UseCounterReturnsAction { /** * 增加计数器 */ inc: (delta?: number) => void /** * 减少计数器 */ dec: (delta?: number) => void /** * 设置计数器 */ set: (value: number) => void /** * 获取计数器 */ get(): number /** * 重置计数器 */ reset: (n?: number) => void /** * 设置计数器,使用 React 的 `setState` 风格,支持函数更新器避免过期值 * * @since 1.9.0 */ setState: (state: SetStateAction<number>) => void } export interface UseCounterState { /** * 计数器的值 */ count: number /** * 计数器的最大值 */ max: number /** * 计数器的最小值 */ min: number /** * 计数器的初始值 */ initialCount: number } export type UseCounterReturns = readonly [ /** * 计数器的计数状态 */ number, /** * 控制计数器的功能 */ UseCounterReturnsAction, /** * 计数器的完整内部状态 */ UseCounterState, ]