diff --git a/packages/shared/refAutoReset/index.test.ts b/packages/shared/refAutoReset/index.test.ts index bad6a7002a8..12c30b91bd7 100644 --- a/packages/shared/refAutoReset/index.test.ts +++ b/packages/shared/refAutoReset/index.test.ts @@ -30,6 +30,14 @@ describe('refAutoReset', () => { expect(val.value).toBe('default') }) + it('should be reset with maybeRef', async () => { + const val = refAutoReset(() => [123], () => 10) + val.value = [999] + expect(val.value).toEqual([999]) + await new Promise(resolve => setTimeout(resolve, 11)) + expect(val.value).toEqual([123]) + }) + it('should change afterMs', async () => { const afterMs = ref(150) const val = refAutoReset('default', afterMs) diff --git a/packages/shared/refAutoReset/index.ts b/packages/shared/refAutoReset/index.ts index aaf91e404f5..10f43cf0c9e 100644 --- a/packages/shared/refAutoReset/index.ts +++ b/packages/shared/refAutoReset/index.ts @@ -11,14 +11,14 @@ import { tryOnScopeDispose } from '../tryOnScopeDispose' * @param defaultValue The value which will be set. * @param afterMs A zero-or-greater delay in milliseconds. */ -export function refAutoReset(defaultValue: T, afterMs: MaybeRefOrGetter = 10000): Ref { +export function refAutoReset(defaultValue: MaybeRefOrGetter, afterMs: MaybeRefOrGetter = 10000): Ref { return customRef((track, trigger) => { - let value: T = defaultValue + let value: T = toValue(defaultValue) let timer: any const resetAfter = () => setTimeout(() => { - value = defaultValue + value = toValue(defaultValue) trigger() }, toValue(afterMs))