From e38c754e71fac05daf159bb73d9f67d3eac7b827 Mon Sep 17 00:00:00 2001 From: kyvg Date: Wed, 29 Oct 2025 11:06:17 +0200 Subject: [PATCH] refactor: improve cleanup of loading timer in button component --- components/button/button.tsx | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/components/button/button.tsx b/components/button/button.tsx index 32fdf9e21d..48ee5a724d 100644 --- a/components/button/button.tsx +++ b/components/button/button.tsx @@ -69,7 +69,7 @@ export default defineComponent({ watch( loadingOrDelay, val => { - clearTimeout(delayTimeoutRef.value); + cleanupTimer() if (typeof loadingOrDelay.value === 'number') { delayTimeoutRef.value = setTimeout(() => { innerLoading.value = val; @@ -149,6 +149,13 @@ export default defineComponent({ return child; }; + const cleanupTimer = () => { + if (delayTimeoutRef.value) { + clearTimeout(delayTimeoutRef.value); + delayTimeoutRef.value = undefined; + } + } + watchEffect(() => { devWarning( !(props.ghost && isUnBorderedButtonType(props.type)), @@ -160,9 +167,7 @@ export default defineComponent({ onMounted(fixTwoCNChar); onUpdated(fixTwoCNChar); - onBeforeUnmount(() => { - delayTimeoutRef.value && clearTimeout(delayTimeoutRef.value); - }); + onBeforeUnmount(cleanupTimer); const focus = () => { buttonNodeRef.value?.focus();