2024-01-29 09:26:07 +08:00

21 lines
593 B
JavaScript

import { ref, watch } from 'vue';
export function useDeferredTrue(valueRef, delay, shouldDelayRef) {
if (!delay) return valueRef;
const delayedRef = ref(valueRef.value);
let timerId = null;
watch(valueRef, value => {
if (timerId !== null) window.clearTimeout(timerId);
if (value === true) {
if (shouldDelayRef && !shouldDelayRef.value) {
delayedRef.value = true;
} else {
timerId = window.setTimeout(() => {
delayedRef.value = true;
}, delay);
}
} else {
delayedRef.value = false;
}
});
return delayedRef;
}