子组件代码
<template>
<button @click="handleClick">点击</button>
</template>
<script setup>
const emit = defineEmits(['customClick'])
const handleClick = () => {
emit('customClick')
}
</script>
父组件代码
<template>
<ChildComponent @customClick.prevent="debounceHandleClick" />
</template>
<script setup>
import { ref } from 'vue'
import ChildComponent from './ChildComponent.vue'
const debounceTimer = ref(null)
const handleClick = () => {
// 实际处理逻辑
console.log('点击处理')
}
const debounceHandleClick = () => {
if (debounceTimer.value) {
clearTimeout(debounceTimer.value)
}
debounceTimer.value = setTimeout(() => {
handleClick()
debounceTimer.value = null
}, 300) // 防抖时间300ms,可按需调整
}
</script>