防抖按钮组件封装

父组件使用

       <DebounceButton key="submitForm" @click="submitForm(1)" type="success" :loading="tempLoading" plain>保存</DebounceButton>

子组件

<template>
    <el-button v-bind="attrs" @click="_handleClick">
        <slot></slot>
    </el-button>
</template>

<script lang="ts" setup>
import { useAttrs } from 'vue';
import { debounce } from 'lodash';

const attrs = useAttrs();
// delay 点击 防抖延时时间
const delay:any = attrs?.delay || 1000;
const emits = defineEmits(['click']);
const handleClick = ($evt) => {
    emits('click', $evt);
};

const _handleClick = debounce(handleClick, delay, { leading: true, trailing: false });
</script>

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容