指令

连续点击指令 vAsamRepeatClick

按住主要鼠标按钮时重复执行回调。

使用场景 ​

按住主要鼠标按钮时重复执行回调。

延迟重复与数量上限 ​

按住增加按钮观察重复,松开停止;单次点击也生效。

延迟重复与数量上限

展开源码

使用约定 ​

绑定函数使用默认节奏,或传入 { handler, delay, interval } 明确控制首次等待与重复间隔。鼠标抬起停止重复,目标卸载执行指令清理。业务回调自行检查范围或忙碌状态,本例限制数量上限。

组合职责与生命周期 ​

SFC 命名 vAsamRepeatClick 后消费业务回调。仅主鼠标按键长按重复执行,mouseup 结束重复,短点击仍调用一次;更新替换回调,卸载释放定时器和监听。绑定函数或 { handler, delay, interval } 可指定重复间隔和启动延迟,不增加组件 size 或业务计数状态。

API

指令 vAsamRepeatClick

属性名说明类型默认值
created—DirectiveHook<HTMLElement, null, AsamRepeatClickBinding, string, unknown> | undefined—
beforeMount—DirectiveHook<HTMLElement, null, AsamRepeatClickBinding, string, unknown> | undefined—
mounted—DirectiveHook<HTMLElement, null, AsamRepeatClickBinding, string, unknown> | undefined—
beforeUpdate—DirectiveHook<HTMLElement, VNode<any, HTMLElement, { [key: string]: any; }>, AsamRepeatClickBinding, string, unknown> | undefined—
updated—DirectiveHook<HTMLElement, VNode<any, HTMLElement, { [key: string]: any; }>, AsamRepeatClickBinding, string, unknown> | undefined—
beforeUnmount—DirectiveHook<HTMLElement, null, AsamRepeatClickBinding, string, unknown> | undefined—
unmounted—DirectiveHook<HTMLElement, null, AsamRepeatClickBinding, string, unknown> | undefined—
getSSRProps—(typeof vAsamRepeatClick)["getSSRProps"]—
deep—boolean | undefined—
install—(app: App) => void—

类型 AsamRepeatClickOptions

属性名说明类型默认值
interval—number | undefined—
delay—number | undefined—
handler—(...args: unknown[]) => unknown—

类型 AsamRepeatClickBinding

属性名说明类型默认值
interval—number | undefined—
delay—number | undefined—
handler—(...args: unknown[]) => unknown—

类型 AsamRepeatClickDirective

属性名说明类型默认值
created—DirectiveHook<HTMLElement, null, AsamRepeatClickBinding, string, unknown> | undefined—
beforeMount—DirectiveHook<HTMLElement, null, AsamRepeatClickBinding, string, unknown> | undefined—
mounted—DirectiveHook<HTMLElement, null, AsamRepeatClickBinding, string, unknown> | undefined—
beforeUpdate—DirectiveHook<HTMLElement, VNode<any, HTMLElement, { [key: string]: any; }>, AsamRepeatClickBinding, string, unknown> | undefined—
updated—DirectiveHook<HTMLElement, VNode<any, HTMLElement, { [key: string]: any; }>, AsamRepeatClickBinding, string, unknown> | undefined—
beforeUnmount—DirectiveHook<HTMLElement, null, AsamRepeatClickBinding, string, unknown> | undefined—
unmounted—DirectiveHook<HTMLElement, null, AsamRepeatClickBinding, string, unknown> | undefined—
getSSRProps—(AsamRepeatClickDirective)["getSSRProps"]—
deep—boolean | undefined—
install—(app: App) => void—
参数与事件补充说明

参数与事件说明

created

必填:否;声明来源:依赖声明。

created 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(el: HTMLElement, binding: DirectiveBinding<AsamRepeatClickBinding, string, unknown>, vnode: VNode<any, HTMLElement, { [key: string]: any; }>, prevVNode: null): void

beforeMount

必填:否;声明来源:依赖声明。

beforeMount 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(el: HTMLElement, binding: DirectiveBinding<AsamRepeatClickBinding, string, unknown>, vnode: VNode<any, HTMLElement, { [key: string]: any; }>, prevVNode: null): void

mounted

必填:否;声明来源:依赖声明。

mounted 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(el: HTMLElement, binding: DirectiveBinding<AsamRepeatClickBinding, string, unknown>, vnode: VNode<any, HTMLElement, { [key: string]: any; }>, prevVNode: null): void

beforeUpdate

必填:否;声明来源:依赖声明。

beforeUpdate 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(el: HTMLElement, binding: DirectiveBinding<AsamRepeatClickBinding, string, unknown>, vnode: VNode<any, HTMLElement, { [key: string]: any; }>, prevVNode: VNode<any, HTMLElement, { [key: string]: any; }>): void

updated

必填:否;声明来源:依赖声明。

updated 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(el: HTMLElement, binding: DirectiveBinding<AsamRepeatClickBinding, string, unknown>, vnode: VNode<any, HTMLElement, { [key: string]: any; }>, prevVNode: VNode<any, HTMLElement, { [key: string]: any; }>): void

beforeUnmount

必填:否;声明来源:依赖声明。

beforeUnmount 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(el: HTMLElement, binding: DirectiveBinding<AsamRepeatClickBinding, string, unknown>, vnode: VNode<any, HTMLElement, { [key: string]: any; }>, prevVNode: null): void

unmounted

必填:否;声明来源:依赖声明。

unmounted 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(el: HTMLElement, binding: DirectiveBinding<AsamRepeatClickBinding, string, unknown>, vnode: VNode<any, HTMLElement, { [key: string]: any; }>, prevVNode: null): void

getSSRProps

必填:否;声明来源:依赖声明。

getSSRProps 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(binding: DirectiveBinding<AsamRepeatClickBinding, string, unknown>, vnode: VNode<RendererNode, RendererElement, { [key: string]: any; }>): ReturnType<Extract<NonNullable<(typeof vAsamRepeatClick)["getSSRProps"]>, (...args: never[]) => unknown>>

deep

必填:否;声明来源:依赖声明。

deep 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

枚举:false / true

install

必填:是;声明来源:ASAM 声明。

install 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(app: App<any>): void

vAsamRepeatClick 公开类型视图
ts
import type { DirectiveHook, DirectiveBinding, VNode, RendererNode, RendererElement, App } from 'vue';
import type { AsamRepeatClickBinding } from '@asam-ui/ui';
import { vAsamRepeatClick } from '@asam-ui/ui';

// vAsamRepeatClick
type PublicContract = {
	"created"?: DirectiveHook<HTMLElement, null, AsamRepeatClickBinding, string, unknown> | undefined;
	"beforeMount"?: DirectiveHook<HTMLElement, null, AsamRepeatClickBinding, string, unknown> | undefined;
	"mounted"?: DirectiveHook<HTMLElement, null, AsamRepeatClickBinding, string, unknown> | undefined;
	"beforeUpdate"?: DirectiveHook<HTMLElement, VNode<any, HTMLElement, { [key: string]: any; }>, AsamRepeatClickBinding, string, unknown> | undefined;
	"updated"?: DirectiveHook<HTMLElement, VNode<any, HTMLElement, { [key: string]: any; }>, AsamRepeatClickBinding, string, unknown> | undefined;
	"beforeUnmount"?: DirectiveHook<HTMLElement, null, AsamRepeatClickBinding, string, unknown> | undefined;
	"unmounted"?: DirectiveHook<HTMLElement, null, AsamRepeatClickBinding, string, unknown> | undefined;
	"getSSRProps"?: (typeof vAsamRepeatClick)["getSSRProps"];
	"deep"?: boolean | undefined;
	"install": (app: App) => void;
};

参数与事件说明

interval

必填:否;声明来源:ASAM 声明。

delay

必填:否;声明来源:ASAM 声明。

handler

必填:是;声明来源:ASAM 声明。

handler 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(...args: unknown[]): unknown

AsamRepeatClickOptions 公开类型视图
ts
import type { AsamRepeatClickOptions } from '@asam-ui/ui';

// AsamRepeatClickOptions
type PublicContract = {
	"interval"?: number | undefined;
	"delay"?: number | undefined;
	"handler": (...args: unknown[]) => unknown;
};

组合契约按分支生效;请同时查看公开类型。

参数与事件说明

interval

必填:按分支;声明来源:ASAM 声明。

delay

必填:按分支;声明来源:ASAM 声明。

handler

必填:按分支;声明来源:ASAM 声明。

handler 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

契约分支 1

事件参数:(...args: unknown[]): unknown

AsamRepeatClickBinding 公开类型视图
ts
import type { AsamRepeatClickBinding } from '@asam-ui/ui';

type PublicMember<T, K extends PropertyKey> = T extends unknown ? K extends keyof T ? T[K] : never : never;

// AsamRepeatClickBinding
type PublicContract = AsamRepeatClickBinding;

参数与事件说明

created

必填:否;声明来源:依赖声明。

created 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(el: HTMLElement, binding: DirectiveBinding<AsamRepeatClickBinding, string, unknown>, vnode: VNode<any, HTMLElement, { [key: string]: any; }>, prevVNode: null): void

beforeMount

必填:否;声明来源:依赖声明。

beforeMount 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(el: HTMLElement, binding: DirectiveBinding<AsamRepeatClickBinding, string, unknown>, vnode: VNode<any, HTMLElement, { [key: string]: any; }>, prevVNode: null): void

mounted

必填:否;声明来源:依赖声明。

mounted 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(el: HTMLElement, binding: DirectiveBinding<AsamRepeatClickBinding, string, unknown>, vnode: VNode<any, HTMLElement, { [key: string]: any; }>, prevVNode: null): void

beforeUpdate

必填:否;声明来源:依赖声明。

beforeUpdate 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(el: HTMLElement, binding: DirectiveBinding<AsamRepeatClickBinding, string, unknown>, vnode: VNode<any, HTMLElement, { [key: string]: any; }>, prevVNode: VNode<any, HTMLElement, { [key: string]: any; }>): void

updated

必填:否;声明来源:依赖声明。

updated 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(el: HTMLElement, binding: DirectiveBinding<AsamRepeatClickBinding, string, unknown>, vnode: VNode<any, HTMLElement, { [key: string]: any; }>, prevVNode: VNode<any, HTMLElement, { [key: string]: any; }>): void

beforeUnmount

必填:否;声明来源:依赖声明。

beforeUnmount 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(el: HTMLElement, binding: DirectiveBinding<AsamRepeatClickBinding, string, unknown>, vnode: VNode<any, HTMLElement, { [key: string]: any; }>, prevVNode: null): void

unmounted

必填:否;声明来源:依赖声明。

unmounted 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(el: HTMLElement, binding: DirectiveBinding<AsamRepeatClickBinding, string, unknown>, vnode: VNode<any, HTMLElement, { [key: string]: any; }>, prevVNode: null): void

getSSRProps

必填:否;声明来源:依赖声明。

getSSRProps 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(binding: DirectiveBinding<AsamRepeatClickBinding, string, unknown>, vnode: VNode<RendererNode, RendererElement, { [key: string]: any; }>): ReturnType<Extract<NonNullable<(AsamRepeatClickDirective)["getSSRProps"]>, (...args: never[]) => unknown>>

deep

必填:否;声明来源:依赖声明。

deep 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

枚举:false / true

install

必填:是;声明来源:ASAM 声明。

install 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(app: App<any>): void

AsamRepeatClickDirective 公开类型视图
ts
import type { DirectiveHook, DirectiveBinding, VNode, RendererNode, RendererElement, App } from 'vue';
import type { AsamRepeatClickDirective, AsamRepeatClickBinding } from '@asam-ui/ui';

// AsamRepeatClickDirective
type PublicContract = {
	"created"?: DirectiveHook<HTMLElement, null, AsamRepeatClickBinding, string, unknown> | undefined;
	"beforeMount"?: DirectiveHook<HTMLElement, null, AsamRepeatClickBinding, string, unknown> | undefined;
	"mounted"?: DirectiveHook<HTMLElement, null, AsamRepeatClickBinding, string, unknown> | undefined;
	"beforeUpdate"?: DirectiveHook<HTMLElement, VNode<any, HTMLElement, { [key: string]: any; }>, AsamRepeatClickBinding, string, unknown> | undefined;
	"updated"?: DirectiveHook<HTMLElement, VNode<any, HTMLElement, { [key: string]: any; }>, AsamRepeatClickBinding, string, unknown> | undefined;
	"beforeUnmount"?: DirectiveHook<HTMLElement, null, AsamRepeatClickBinding, string, unknown> | undefined;
	"unmounted"?: DirectiveHook<HTMLElement, null, AsamRepeatClickBinding, string, unknown> | undefined;
	"getSSRProps"?: (AsamRepeatClickDirective)["getSSRProps"];
	"deep"?: boolean | undefined;
	"install": (app: App) => void;
};

搜索文档

Tab 选择结果 Enter 打开 Esc 关闭