表单提交防抖函数

防抖函数的封装及使用(表单提交)

一般表单提交不推荐用防抖,真的想用有以下的方法(表单重复提交的解决方案放在下一篇文章中

场景和定义:
    防抖:当进行某个操作的时候,为防止暴力点击,造成短时间内多次触发事件,需要进行防抖操作(即在一定的时间内,只能对事件进行一
次操作,且在一定的时间内只有第一次生效。例如:在滚动事件和鼠标移动事件中,可能移动或者滚动很少的距离,函数也会触发很多次给系统造成压力
    以下是操作方法的步骤,和详细代码:

操作步骤:
1、在src/utils/index.js中增加防抖函数

/**
 * 防抖
 */
export const Debounce = (fn, t) => {
  let delay = t || 500;
  let timer;
  return function() {
    let args = arguments;
    if (timer) {
      clearTimeout(timer);
    }

    let callNow = !timer;

    timer = setTimeout(() => {
      timer = null;
    }, delay);

    if (callNow) fn.apply(this, args);
  };
};

2、在需要的页面中引入

import { Debounce } from '@/utils/index.js';

3、点击提交(或者确定)时,在methods中的提交函数中这样写
在这里插入图片描述

// 下面的submit也可根据需要改为点击提交(或者确认)时触发的函数名
//下面的1000可根据需要,修改为你需要在多久之后才能第二次触发
    submit: Debounce(function() { 
      你需要执行的操作
    }, 1000)

下面是我写过的,仅供参考

    <div slot="footer" class="dialog-footer">
          <el-button @click="cancel">取 消</el-button>
          <el-button type="primary" @click="submitForm">确 定</el-button>
    </div>

//引入

    import { Debounce } from '@/utils/index.js';

//使用

    /** 提交按钮 */
    submitForm: Debounce(function () {
      this.$refs['form'].validate((valid) => {
        if (valid) {
          if (this.form.id != undefined) {
            edit(this.form).then((response) => {
              this.$modal.msgSuccess('修改成功');
              this.open = false;
              this.getList();
            });
          } else {
            add(this.form).then((response) => {
              this.$modal.msgSuccess('新增成功');
              this.open = false;
              this.getList();
            });
          }
        }
      });
    },1000),
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值