Skip to content

watchDebounced ​

类别
导出体积
455 B
上次更改
6 months ago
别名
debouncedWatch

防抖监听。回调函数仅在源停止变化指定时长后才会被调用。

示例 ​

此演示中延迟设置为 1000ms,最大等待时间设置为 5000ms。

输入内容:

更新次数:0

使用方法 ​

类似于 watch,但提供额外选项 debounce 和 maxWait,它们将应用于回调函数。

ts
import { 
watchDebounced
} from '@vueuse/core'
watchDebounced
(
source, () => {
console
.
log
('变化了!') },
{
debounce
: 500,
maxWait
: 1000 },
)

选项 ​

选项类型默认值说明
debounceMaybeRefOrGetter<number>0防抖延迟时间(毫秒)(支持响应式)
maxWaitMaybeRefOrGetter<number>—最大等待时间,超过后强制调用回调函数

所有标准的 watch 选项(如 deep、immediate、flush 等)均支持。

响应式防抖时间 ​

防抖时间参数可以是响应式的:

ts
import { 
watchDebounced
} from '@vueuse/core'
const
debounceMs
=
ref
(500)
watchDebounced
(
source, () => {
console
.
log
('变化了!') },
{
debounce
:
debounceMs
},
) // 之后可以修改防抖时间
debounceMs
.
value
= 1000

工作原理 ​

本质上,它是以下代码的简写形式:

ts
import { 
debounceFilter
,
watchWithFilter
} from '@vueuse/core'
watchWithFilter
(
source, () => {
console
.
log
('变化了!') },
{
eventFilter
:
debounceFilter
(500, {
maxWait
: 1000 }),
}, )

类型声明 ​

显示类型声明
ts
export interface 
WatchDebouncedOptions
<
Immediate
>
extends WatchOptions<
Immediate
>, DebounceFilterOptions {
debounce
?:
MaybeRefOrGetter
<number>
} export declare function
watchDebounced
<
T
,
Immediate
extends
Readonly
<boolean> = false,
>(
source
:
WatchSource
<
T
>,
cb
:
WatchCallback
<
T
,
Immediate
extends true ?
T
| undefined :
T
>,
options
?:
WatchDebouncedOptions
<
Immediate
>,
):
WatchHandle
export declare function
watchDebounced
<
T
extends
Readonly
<
MultiWatchSources
>,
Immediate
extends
Readonly
<boolean> = false,
>(
sources
: [...
T
],
cb
:
WatchCallback
<
MapSources
<
T
>,
MapOldSources
<
T
,
Immediate
>>,
options
?:
WatchDebouncedOptions
<
Immediate
>,
):
WatchHandle
export declare function
watchDebounced
<
T
extends object,
Immediate
extends
Readonly
<boolean> = false,
>(
source
:
T
,
cb
:
WatchCallback
<
T
,
Immediate
extends true ?
T
| undefined :
T
>,
options
?:
WatchDebouncedOptions
<
Immediate
>,
):
WatchHandle
/** @deprecated use `watchDebounced` instead */ export declare const
debouncedWatch
: typeof
watchDebounced

源码 ​

源码 • 演示 • 文档

贡献者 ​

一纸忘忧
Anthony Fu
Anthony Fu
Vida Xie
sun0day
webfansplz
一纸忘忧
山吹色御守
Kricsleo
Arthur Darkstone
IlyaL
James Garbutt
OrbisK
vaakian X
lvjiaxuan

更新日志 ​

f1d32 - fix(shared): align overloads order of watch functions with original version (#5288)
b8102 - feat(watch): update watch return typo in watchExtractedObservable, watchDebounced, watchDeep, watchImmediate, watchOnce, watchThrottled and watchWithFilter (#4896)
e5f74 - feat!: deprecate alias exports in favor of original function names (#5009)
7432f - feat(types): deprecate MaybeRef and MaybeRefOrGetter in favor of Vue's native (#4636)
0a9ed - feat!: drop Vue 2 support, optimize bundles and clean up (#4349)