Skip to content

v-debounce 指令

概述

  • 防抖事件绑定,限制高频触发;。
  • 可通过参数指定事件名(默认 input)。
  • 函数模式:v-debounce="fn"
  • 自定义事件:v-debounce:input="fn"v-debounce:click="fn"

示例

查看代码
vue
<script setup lang="ts">
import { ref } from 'vue'

const input = ref('')

function handleInput(e: Event) {
  const value = (e.target as HTMLInputElement).value
  console.log('输入值:', value)
  input.value = value
}

const status = ref(false)

function handleClick(e: Event) {
  console.log('点击防抖:', e.type)
  status.value = !status.value
}
</script>

<template>
  <n-flex vertical>
    <!-- 默认事件 input,300ms 防抖 -->
    <n-card>
      {{ input }}
    </n-card>

    <n-input v-debounce="handleInput" placeholder="输入触发防抖" />
    <!-- 指定事件 click,500ms 防抖且首次立即执行 -->

    <n-alert title="监听事件触发状态" :type="status ? 'info' : 'default'">
      触发事件会改变状态
    </n-alert>
    <n-flex>
      <n-button @click="handleClick">
        无指令的
      </n-button>
      <n-button v-debounce:click.2000="handleClick">
        点击防抖
      </n-button>
      <n-button v-debounce:click.immediate.2000="handleClick">
        先执行一次
      </n-button>
    </n-flex>
  </n-flex>
</template>

Released under the MIT License.