vue3定义全局防抖指令

文章目录

  • 代码
  • 参数讲解

在写项目时,总会有要进行防抖节流的时候,如果写一个debounce函数的话 用起来代码总会是有点长的,因此想到了用一个全局指令进行输入框的防抖,毕竟全局指令使用时只要v-xxx就行了,非常方便

代码

前提是需要全局注册
在这里插入图片描述
使用
在这里插入图片描述

export default {debounce: {mounted(el: {addEventListener: (arg0: string, arg1: () => void) => void;value: any;},binding: { value: any; arg: any },) {let timer: number | null = null;const { value, arg = 0 } = binding;el.addEventListener("input", () => {if (timer) {clearTimeout(timer);}timer = setTimeout(() => {value(el.value, arg);}, 1000);});},updated(el: {addEventListener: (arg0: string, arg1: (e: any) => void) => void;value: any;removeEventListener: (arg0: string, arg1: (e: any) => void) => void;},binding: { value: any; arg: any },) {// 若指令的值更新,重新绑定事件处理函数let timer: number | null = null;let { value, arg = 0 } = binding;const existingListener = (e: any) => {if (timer) {clearTimeout(timer);}timer = setTimeout(() => {value(el.value, arg);}, 1000);};//   el.removeEventListener("input", existingListener);//   el.addEventListener("input", existingListener);},},
};

v-debounce 后面的 :[typeId]就是传的参数 即arg

注意:如果写v-debounce.typeId 那么传的就是一个字符串“typeId” 而且[ ]只支持传一个参数 如果想要传多个参数的话 建议使用数组进行整体的传参

参数讲解

讲一下binding函数的几个参数

  bind(el, binding, vnode, oldVnode) { }

el:指令绑定的元素的DOM。
binding:一个传参对象,包含以下的属性:

value:传递给指令的值。例如:v-focus=“1”,获取到的值就是 1
oldValue:更新之前的值,仅在 beforeUpdate 和 updated 中可用。无论值是否更改,它都可用。
arg:传递给指令的参数 (如果有的话)。例如在
v-my-directive:foo 中,参数是 “foo”。
modifiers:传入修饰符的对象 。例如在v-my-directive.foo.bar 中,修饰符对象是 { foo: true, bar: true }。
instance:使用该指令的组件实例。
dir:指令的定义对象。

vnode:代表绑定元素的底层 VNode。
prevNode:之前的渲染中代表指令所绑定元素的 VNode。仅在 beforeUpdate 和 updated 钩子中可用。

举个例子

<div v-example:foo.bar="baz">

binding参数会是一个这样的对象

{arg: 'foo',modifiers: { bar: true },//传递的修饰符value: /* `baz` 的值 */,oldValue: /* 上一次更新时 `baz` 的值 */
}

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

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

相关文章

WebDeveloper 流量分析、sudo提权,靶场通关WP

一、信息收集 1、主机探测 arp-scan -l netdiscover -i eth0 -r 192.168.33.0/24 nmap -sP 192.168.66.0/24 2、端口扫描 nmap -sS -sV 192.168.66.141 PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4 (Ubuntu Linux; protocol 2.0) 80/tcp op…

某化工厂运维升级:智和信通运维平台实现工业交换机智能管理

随着某化工厂数字化转型的加速推进&#xff0c;其生产过程对复杂网络和IT设备的依赖程度日益加深。当前的网络不仅承载着生产控制系统&#xff08;如DCS、PLC等&#xff09;的通信需求&#xff0c;还同时支持办公自动化、安防监控、工业物联网&#xff08;IoT&#xff09;等多种…

React:封装一个编辑文章的组件

封装一个编辑文章的组件,就要用到富文本编辑器,支持标题、内容、标签等的编辑,并且能够保存和取消。 首先,我需要考虑用户的具体需求。编辑文章组件通常需要哪些功能?标题输入、内容编辑、标签管理、保存和取消按钮。可能还需要自动保存草稿、验证输入、错误提示等功能。用…

数据结构与算法:图论——并查集

先给出并查集的模板&#xff0c;还有一些leetcode算法题&#xff0c;以后遇见了相关题目再往上增加 并查集模板 整体模板C代码如下&#xff1a; 空间复杂度&#xff1a; O(n) &#xff0c;申请一个father数组。 时间复杂度 路径压缩后的并查集时间复杂度在O(logn)与O(1)之间…

精品推荐-湖仓一体电商数据分析平台实践教程合集(视频教程+设计文档+完整项目代码)

精品推荐&#xff0c;湖仓一体电商数据分析平台实践教程合集&#xff0c;包含视频教程、设计文档及完整项目代码等资料&#xff0c;供大家学习。 1、项目背景介绍及项目架构 2、项目使用技术版本及组件搭建 3、项目数据种类与采集 4、实时业务统计指标分析一——ODS分层设计与…

Git 基本操作(一)

目录 git add git commit git log git status git diff git 版本回退 git reset git add git add 指令为添加工作区中的文件到暂存区中。 git add file_name; //将工作区名称为file_name的文件添加进暂存区 git add .; //将工作区中的所有文件添加进暂存区 git comm…

docker打包镜像时提示permission denied

sudo usermod -aG docker $USER //让当前用户加入docker用户组 sudo systemctl restart docker //重新启动docker服务 newgrp docker //更新组权限 来源&#xff1a;docker命令出现permission denied的解决方法_permission denied while trying to connect…

Deepseek常用高效提问模板!

DeepSeek高效提问秘籍大放送&#xff01; 掌握这些实用提问模板&#xff0c;能让你与DeepSeek的对话更加精准、高效&#xff01; 1. 精准阐述需求 提问时务必清晰明确地表达问题或任务。例如&#xff1a; 欠佳的提问&#xff1a;“随便说点内容。”优化后的提问&#xff1a…

地震资料偏移成像中,多次波(多次反射波)处理

在地震资料偏移成像中&#xff0c;多次波&#xff08;多次反射波&#xff09;会降低成像质量&#xff0c;导致虚假同相轴和构造假象。处理多次波需要结合波场分离和压制技术&#xff0c;以下是主要方法和开源算法参考&#xff1a; 1. 多次波处理的核心方法 (1) 基于波场分离的…

quickbi finebi 测评(案例讲解)

quickbi & finebi 测评 国产BI中入门门槛比较低的有两个&#xff0c;分别是quickbi和finebi。根据我的经验通过这篇文章做一个关于这两款BI的测评文章。 quickbi分为个人版、高级版、专业版、私有化部署四种。这篇文章以quickbi高级版为例&#xff0c;对quickbi进行分享。…

【进阶】--函数栈帧的创建和销毁详解

目录 一.函数栈帧的概念 二.理解函数栈帧能让我们解决什么问题 三.相关寄存器和汇编指令知识点补充 四.函数栈帧的创建和销毁 4.1.调用堆栈 4.2.函数栈帧的创建 4.3 函数栈帧的销毁 一.函数栈帧的概念 --在C语言中&#xff0c;函数栈帧是指在函数调用过程中&#xff0c;…

基于大模型预测的输尿管癌诊疗全流程研究报告

目录 一、引言 1.1 研究背景与意义 1.2 研究目的与创新点 二、大模型预测输尿管癌的原理与方法 2.1 大模型技术概述 2.2 用于输尿管癌预测的大模型选择 2.3 数据收集与处理 2.4 模型训练与优化 三、术前风险预测与手术方案制定 3.1 术前风险预测指标 3.2 大模型预测…

【Machine Learning Q and AI 读书笔记】- 03 小样本学习

Machine Learning Q and AI 中文译名 大模型技术30讲&#xff0c;主要总结了大模型相关的技术要点&#xff0c;结合学术和工程化&#xff0c;对LLM从业者来说&#xff0c;是一份非常好的学习实践技术地图. 本文是Machine Learning Q and AI 读书笔记的第3篇&#xff0c;对应原…

PETR和位置编码

PETR和位置编码 petr检测网络中有2种类型的位置编码。 正弦编码和petr论文提出的3D Position Embedding。transformer模块输入除了qkv&#xff0c;还有query_pos和key_pos。这里重点记录下query_pos和key_pos的生成 query pos的生成 先定义reference_points, shape为(n_query…

Ubuntu搭建 Nginx以及Keepalived 实现 主备

目录 前言1. 基本知识2. Keepalived3. 脚本配置4. Nginx前言 🤟 找工作,来万码优才:👉 #小程序://万码优才/r6rqmzDaXpYkJZF 爬虫神器,无代码爬取,就来:bright.cn Java基本知识: java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全)【Java项目】实战CRU…

文章记单词 | 第56篇(六级)

一&#xff0c;单词释义 interview /ˈɪntəvjuː/&#xff1a; 名词&#xff1a;面试&#xff1b;采访&#xff1b;面谈动词&#xff1a;对… 进行面试&#xff1b;采访&#xff1b;接见 radioactive /ˌreɪdiəʊˈktɪv/&#xff1a;形容词&#xff1a;放射性的&#xff…

MATLAB函数调用全解析:从入门到精通

在MATLAB编程中&#xff0c;函数是代码复用的核心单元。本文将全面解析MATLAB中各类函数的调用方法&#xff0c;包括内置函数、自定义函数、匿名函数等&#xff0c;帮助提升代码效率&#xff01; 一、MATLAB函数概述 MATLAB函数分为以下类型&#xff1a; 内置函数&#xff1a…

哈希表笔记(二)redis

Redis哈希表实现分析 这份代码是Redis核心数据结构之一的字典(dict)实现&#xff0c;本质上是一个哈希表的实现。Redis的字典结构被广泛用于各种内部数据结构&#xff0c;包括Redis数据库本身和哈希键类型。 核心特点 双表设计&#xff1a;每个字典包含两个哈希表&#xff0…

PDF嵌入隐藏的文字

所需依赖 <dependency><groupId>com.itextpdf</groupId><artifactId>itext-core</artifactId><version>9.0.0</version><type>pom</type> </dependency>源码 /*** PDF工具*/ public class PdfUtils {/*** 在 PD…

RAG工程-基于LangChain 实现 Advanced RAG(预检索-查询优化)(下)

Multi-Query 多路召回 多路召回流程图 多路召回策略利用大语言模型&#xff08;LLM&#xff09;对原始查询进行拓展&#xff0c;生成多个与原始查询相关的问题&#xff0c;再将原始查询和生成的所有相关问题一同发送给检索系统进行检索。它适用于用户查询比较宽泛、模糊或者需要…