vue实现防抖函数、节流函数,全局使用【输入框、按钮】

news2025/8/3 6:42:19

博主介绍

📢点击下列内容可跳转对应的界面,查看更多精彩内容!

🍎主页:水香木鱼
🍍专栏:后台管理系统


文章目录

简介:这是一篇有关【vue实现防抖函数、节流函数,全局使用【输入框、按钮】】的文章,博主用最精简的语言去表达给前端读者们。

input输入框防抖
button按钮节流

1、input输入框防抖【单页面使用】

在这里插入图片描述

场景:input输入时进行查询

Ⅰ、创建utils工具,antiShake.js

/*输入框防抖*/
const antiShake = function (fn, delay) {
  let timer = null;
  return function () {
    let content = this;
    let args = arguments;
    if (timer) {
      clearTimeout(timer);
    }
    timer = setTimeout(() => {
      fn.apply(content, args);
    }, delay);
  };
};

export default antiShake;

Ⅱ、页面使用

  • 使用工具antiShake
  • 使用 changeSeletc: antiShake 函数
<template>
    <!-- 防抖 -->
    <div>
      <h1>防抖</h1>
      <el-input
        v-model="serves"
        placeholder="请输入内容"
        style="width: 300px"
      ></el-input>
    </div>
    <!-- END! -->
</template>
<script>
import antiShake from "../utils/antiShake"//使用工具antiShake
export default {
  data() {
    return {
      serves: "",
    };
  },
  methods: {
    changeSeletc: antiShake(function () {
      console.log("防抖:", this.serves);
    }, 500),
  },
  //监听输入框
  watch: {
    serves(news) {
      this.changeSeletc();
    },
  },
};
</script>

2、button按钮节流【写法一 全局使用】

在这里插入图片描述

场景:按钮点击下拉加载鼠标滚动拖拽动画(节流通常用在比防抖刷新更频繁的场景下,而且大部分是需要涉及动画的操作。)

Ⅰ、创建utils工具,reduceExpenditure.js

/*按钮节流*/ 
import Vue from "vue";
const reduceExpenditure = Vue.directive("reduceExpenditure-button", {
  inserted: function (el, binding) {
    el.addEventListener("click", () => {
      // 判断按钮是否可点击
      if (!el.disabled) {
        el.disabled = true;
        setTimeout(() => {
          el.disabled = false;
        }, binding.value || 3000); //默认3秒节流时间
      }
    });
  },
});

export { reduceExpenditure };

Ⅱ、main.js 中全局注册

import { reduceExpenditure } from "./utils/reduceExpenditure";
Vue.prototype.$reduceExpenditure = reduceExpenditure;// 全局注册节流

Ⅲ、页面使用

使用v-reduceExpenditure-button 控制节流

<template>
    <!-- 节流 -->
    <div>
      <h1>节流</h1>
      <el-button @click="go" v-reduceExpenditure-button>确定</el-button>
    </div>
    <!-- END! -->
</template>    

3、button按钮节流【写法二 单页面使用】

Ⅰ、创建utils工具,throttle.js

/*按钮节流*/
const throttle = (func, delay) => {
  // 缓存一个定时器
  let timer = null;
  // 这里返回的函数是每次用户实际调用的节流函数
  return function (...args) {
    if (!timer) {
      //判断timer是否有值,如果没有则说明定时器不存在即可继续执行
      timer = setTimeout(() => {
        //关
        func.apply(this, arguments);
        timer = null; //开
      }, delay);
    }
  };
};
export default throttle;

Ⅱ、页面使用

使用submit:throttle

<template>
   <el-button type="primary" @click="submit">提交</el-button>
</template>
<script>
import throttle from "@/utils/throttle"
methods:{
    submit:throttle(function()  {
		console.log('节流')
    },500)
}
</script>

相关推荐

⭐Vue实现搜索关键字标红高亮加粗
⭐vue实现禁止浏览器网页缩放【方法一和方法二可同时设置】
⭐Vue实现网页首屏加载动画、页面内请求数据加载loading
⭐Vue实现任意内容展开 / 收起功能组件
⭐Vue实现点击按钮或者图标可编辑输入框

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/15942.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第一章《初学者问题大集合》第4节:Java程序是如何执行的

想要学好Java编程,就必须先弄清楚Java程序是如何执行的。首先来解释一个最基本的概念:什么是程序?把你想让计算机做的事情用编程语言一条条列出,这个由多条编程语言所组成的“代码序列”就是程序。 那么Java程序又是如何运行的呢?这个过程如图1-1所示。 图1-1 Java程序运…

C语言小游戏之三子棋(井字棋)(1.5w字超详细讲解)

hello&#xff0c;csdn的伙伴们&#xff0c;大家好&#xff0c;我们已经学习到了分支与循环&#xff0c;函数&#xff0c;数组这三大块知识&#xff0c;那么我们现在就可以尝试综合运用前面所学的知识&#xff0c;来完成一个简单的小游戏-----三子棋&#xff08;井字棋&#xf…

Allegro DFM Ravel Rule工具使用指导书

Allegro DFM Ravel Rule工具使用指导书 Allegro任何一个版本都支持DFM Ravel Rule检查,即便是166的版本 打开后的界面如下所示 可以检查项目 测试点,阻焊,走线,丝印,过孔,milling,装配,outline相关的DFM检查 可以让违反规则的设计处以DRC的形式报出来 避免加工问题 …

基于数字孪生打造智慧园区运营平台,助力园区数字化转型

在各行各业数字化转型的浪潮中&#xff0c;园区也在经历数字化转型发展&#xff0c;从传统园区向智慧园区不断演进。传统园区缺乏系统性规划&#xff0c;基于单点功能建设&#xff0c;存在系统孤立、管理粗放且服务不足等问题&#xff0c;难以满足人们日益增长的多样化需求。在…

第四章. Pandas进阶—数据合并

第四章. Pandas进阶 4.6 数据合并 数据合并主要使用的是Merge方法和Concat方法 1.数据合并(merge函数) 1).语法&#xff1a; pandas.merge(right,how‘inner’, on“None”, left_on“None”, right_on“None”, left_indexFalse, right_indexFalse... )参数说明: right&…

甘露糖-聚乙二醇-马来酰亚胺 mannose-PEG-MAL 马来酰亚胺-PEG-甘露糖

甘露糖-聚乙二醇-马来酰亚胺 mannose-PEG-MAL 马来酰亚胺-PEG-甘露糖&#xff0c;溶于大部分有机溶剂&#xff0c;如&#xff1a;DCM、DMF、DMSO、THF等等。在水中有很好的溶解性 中文名称&#xff1a;甘露糖-马来酰亚胺 英文名称&#xff1a;mannose-MAL 别称&#xff1a;…

【LeetCode 每日一题】53. 最大子数组和

01 题目描述 给你一个整数数组 nums &#xff0c;请你找出一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#xff09;&#xff0c;返回其最大和。 子数组 是数组中的一个连续部分。 02 示例 示例1&#xff1a; 输入&#xff1a;nums [-2,1,-3,4,-1,2,1,-5…

从 React 源码彻底搞懂 Ref 的全部 api

ref 是 React 里常用的特性&#xff0c;我们会用它来拿到 dom 的引用。 它一般是这么用的&#xff1a; 函数组件里用 useRef&#xff1a; import React, { useRef, useEffect } from "react";export default function App() {const inputRef useRef();useEffect(…

几乎涵盖了近半年90%的Java面试题,可以肝起来了

前言 很多人在问&#xff1a;八股文还有必要背吗&#xff1f; 近半年来大家听到的、用到的不少&#xff0c;带来的争议也不断。 有人奉为面试神器&#xff0c;全文背诵。有人觉得八股文铺天盖地实际作用不大&#xff0c;还害人不浅… 我觉得不是背不背八股文的问题&#xff0c…

【机器学习并行计算】2 parameter server参数服务器

使用ps实现异步梯度下降。 14年提出的。 异步 vs 同步 可以看出异步运行效率非常高。 异步梯度下降的流程 ps架构流程 worker&#xff1a; 首先从参数服务器拉取最新的参数&#xff1b;然后用自己节点上的数据计算梯度&#xff1b;最后把梯度推给参数服务器参数服务器&#xf…

最快速的文件传输软件,解析镭速文件传输软件

想到每天都需要进行文件传输&#xff0c;就会烦躁&#xff0c;要是有一夸最快速的文件传输软件的话&#xff0c;这样就可以节省大量的时间了&#xff0c;那么针对于用户的这一个需求&#xff0c;我们来介绍一下镭速的文件传输软件&#xff0c;看是否是那么快&#xff0c;快到你…

无监督端到端框架:IVIF

VIF-Net: An Unsupervised Framework for Infrared and Visible Image Fusion &#xff08; VIF-Net: 红外和可见光图像融合的无监督框架&#xff09; &#xff08;本文理解上的难易程度&#xff1a;易&#xff09; 在本文中&#xff0c;我们提出了一种用于红外和可见图像融合…

css 动画实现节流效果

今天在做节流操作时&#xff0c;无意间看到可以用css动画去实现节流效果&#xff0c;然后一顿操作发现果然可以&#xff0c;记录一下 CSS pointer-events 属性 一、 用css中的pointer-events&#xff08;指针事件&#xff09;、animation&#xff08;动画&#xff09;以及:act…

WordPress做缓存Memcached Is Your Friend+Batcache

宝塔面板有两个地方有Memcached,一个是在软件商店的运行环境里面,一个是在php扩展里面,我们先安装PHP扩展中的Memcached ,然后wp后台搜索Memcached Is Your Friend安装插件。WordPress做缓存很给力。缓存命中率保持在 90%以上的WordPress 本地缓存加速方案。 默认我们看到命…

E-Payment Integrator Delphi Edition

E-Payment Integrator Delphi Edition 通过为组件提供处理信用卡和电子支票交易的直观界面&#xff0c;减轻了集成电子支付支持的复杂性。开发人员无需学习复杂的套接字编程或安全实现。通过使用电子支付集成器&#xff0c;开发人员能够针对当前支持的任何支付网关进行定位和开…

比较复杂的策略路由综合实验

下面是网络技能大赛策略这个模块的要求&#xff0c;单独拿出来整理一下 R1、R2、R3间运行OSPF&#xff0c;进程号20&#xff0c;规划单区域&#xff1a;区域0&#xff1b; VSU、R2、R3间运行OSPF&#xff0c;进程号21&#xff0c;规划单区域&#xff1a;区域0&#xff1b; …

JavaScript之事件高级(53rd)

1、注册事件(绑定事件) 给元素添加事件&#xff0c;称为注册事件或者绑定事件。 注册事件有两种方式&#xff1a;传统方式和方法监听注册方式 1、addEventListener事件监听方式 1、eventTarget.addEventListener()方法将指定的监听器注册到 eventTarget&#xff08;目标对…

springMVC异常处理的知识点+异常处理案例

springMVC异常处理的知识点异常处理案例 异常介绍&#xff1a; 我们知道系统中的异常包括两类&#xff1a;预期异常和运行时异常RuntimeException,前者通过捕获异常从而获取异常信息&#xff0c;后者主要通过规范代码开发、测试等手段减少运行时异常的发生 在SpringMVC处理异…

有关服务器虚拟化的常见问题解答

虚拟化”一词经常使用&#xff0c;尤其是与服务器相关的时候。以下是一些有关服务器虚拟化常见问题的解答。 什么是服务器虚拟化? 虚拟化是一个经常应用于范围广泛的技术的术语。从本质上讲&#xff0c;虚拟化技术就是使用分布式软件硬件。在服务器虚拟化领域&#xff0c;这意…

Android

直接运行 最新版的 apktool 可以通过brew安装&#xff0c;命令如下 brew install apktool # 验证安装结果apktool -version (Mac)反编译Android APK详细操作指南[ApkTool,dex2jar,JD-GUI] - CrazyCodeBoy的技术博客官网|CrazyCodeBoy|Devio|专注移动技术开发(Android&I…