其他分享
首页 > 其他分享> > vue防止重复提交数据-防抖功能

vue防止重复提交数据-防抖功能

作者:互联网

首先明确下我们想要实现的效果。

1.用户在按下按钮的时候立即触发点击事件。
2.用户在快速连续按下按钮的时候只触发第一次的点击事件。
3.用户不间断疯狂点击按钮(暴力测试),也只是立即触发第一次的事件,在疯狂点击的过程中不会触发事件,即使超时时间已经过去。

解决方案 lodash,这里不展开分析这个库,只用这个库来实现防重复点击的需求。
不多说直接上代码吧

官网地址奉上 :lodash.debounce | Lodash 中文文档 | Lodash 中文网 (lodashjs.com)

安装lodash

npm i --save lodash

组件中引入

import _ from "lodash"

官方也是习惯将这个库命名为下划线,是不是很与众不同,可能是为了防重名吧,这里不多探讨。

vue组件完整实现

<template>
    <div>
        <div @click="handleClick" style="width: 100px;height: 100px;background-color: yellow;">快速连续点击</div>
    </div>
</template>

<script>
    import _ from "lodash"
    export default {
        methods: {
            handleClick:_.debounce(function() {
                //你的业务逻辑
                console.log('执行业务逻辑1 ' + Math.random())
            }, 1000, {
                'leading': true, //在延迟开始前立即调用事件
                'trailing': false, //在延时结束后不调用,保证事件只被触发一次
            })
        }
    }
</script>
<style>
</style>

亲测有效!

标签:触发,防抖,vue,lodash,debounce,点击,事件,提交,按钮
来源: https://www.cnblogs.com/netcore-vue/p/16434523.html