diff --git a/components/button/button.tsx b/components/button/button.tsx index 951c298d20..f32d3d9d8c 100644 --- a/components/button/button.tsx +++ b/components/button/button.tsx @@ -62,7 +62,7 @@ export default defineComponent({ watch( loadingOrDelay, val => { - clearTimeout(delayTimeoutRef.value); + cleanupTimer() if (typeof loadingOrDelay.value === 'number') { delayTimeoutRef.value = setTimeout(() => { innerLoading.value = val; @@ -135,6 +135,13 @@ export default defineComponent({ return child; }; + const cleanupTimer = () => { + if (delayTimeoutRef.value) { + clearTimeout(delayTimeoutRef.value); + delayTimeoutRef.value = undefined; + } + } + watchEffect(() => { devWarning( !(props.ghost && isUnborderedButtonType(props.type)), @@ -146,9 +153,7 @@ export default defineComponent({ onMounted(fixTwoCNChar); onUpdated(fixTwoCNChar); - onBeforeUnmount(() => { - delayTimeoutRef.value && clearTimeout(delayTimeoutRef.value); - }); + onBeforeUnmount(cleanupTimer); const focus = () => { buttonNodeRef.value?.focus();