From cb78f28f5b400ab26304300613a9773709725c02 Mon Sep 17 00:00:00 2001 From: iChengbo Date: Tue, 25 Oct 2022 13:59:59 +0800 Subject: [PATCH] fix(useCounter): set and reset should also be limited (#2179) --- packages/shared/useCounter/index.test.ts | 20 +++++++++++++++++++- packages/shared/useCounter/index.ts | 2 +- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/packages/shared/useCounter/index.test.ts b/packages/shared/useCounter/index.test.ts index 6ca9a7d0c66..d076ab0ce0e 100644 --- a/packages/shared/useCounter/index.test.ts +++ b/packages/shared/useCounter/index.test.ts @@ -37,7 +37,7 @@ describe('useCounter', () => { }) it('should be update limited counter', () => { - const { count, inc, dec, get } = useCounter(1, { min: -2, max: 15 }) + const { count, inc, dec, get, set, reset } = useCounter(1, { min: -2, max: 15 }) expect(count.value).toBe(1) expect(get()).toBe(1) @@ -53,5 +53,23 @@ describe('useCounter', () => { dec(20) expect(count.value).toBe(-2) expect(get()).toBe(-2) + reset() + expect(count.value).toBe(1) + expect(get()).toBe(1) + set(20) + expect(count.value).toBe(15) + expect(get()).toBe(15) + set(-10) + expect(count.value).toBe(-2) + expect(get()).toBe(-2) + reset() + expect(count.value).toBe(1) + expect(get()).toBe(1) + reset(20) + expect(count.value).toBe(15) + expect(get()).toBe(15) + reset(-10) + expect(count.value).toBe(-2) + expect(get()).toBe(-2) }) }) diff --git a/packages/shared/useCounter/index.ts b/packages/shared/useCounter/index.ts index 746d57f6097..d09b19b7500 100644 --- a/packages/shared/useCounter/index.ts +++ b/packages/shared/useCounter/index.ts @@ -23,7 +23,7 @@ export function useCounter(initialValue = 0, options: UseCounterOptions = {}) { const inc = (delta = 1) => count.value = Math.min(max, count.value + delta) const dec = (delta = 1) => count.value = Math.max(min, count.value - delta) const get = () => count.value - const set = (val: number) => (count.value = val) + const set = (val: number) => (count.value = Math.max(min, Math.min(max, val))) const reset = (val = initialValue) => { initialValue = val return set(val)