Skip to content
On this page

watchDebounced

Category
Last Changed
last month
Alias
debouncedWatch

Debounced watch

Demo

Delay is set to 1000ms and maxWait is set to 5000ms for this demo.

Input:

Times Updated: 0

Usage

Similar to watch, but offering extra options debounce and maxWait which will be applied to the callback function.

import { watchDebounced } from '@vueuse/core'

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

watchDebounced(
  source,
  () => { console.log('changed!') },
  { debounce: 500, maxWait: 1000 },
)

It's essentially a shorthand for the following code:

import { debounceFilter, watchWithFilter } from '@vueuse/core'

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

watchWithFilter(
  source,
  () => { console.log('changed!') },
  {
    eventFilter: debounceFilter(500, { maxWait: 1000 }),
  },
)

Type Declarations

export interface WatchDebouncedOptions<Immediate>
  extends WatchOptions<Immediate>,
    DebounceFilterOptions {
  debounce?: MaybeRef<number>
}
export declare function watchDebounced<
  T extends Readonly<WatchSource<unknown>[]>,
  Immediate extends Readonly<boolean> = false
>(
  sources: [...T],
  cb: WatchCallback<MapSources<T>, MapOldSources<T, Immediate>>,
  options?: WatchDebouncedOptions<Immediate>
): WatchStopHandle
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>
): WatchStopHandle
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>
): WatchStopHandle
export { watchDebounced as debouncedWatch }
export interface WatchDebouncedOptions<Immediate>
  extends WatchOptions<Immediate>,
    DebounceFilterOptions {
  debounce?: MaybeRef<number>
}
export declare function watchDebounced<
  T extends Readonly<WatchSource<unknown>[]>,
  Immediate extends Readonly<boolean> = false
>(
  sources: [...T],
  cb: WatchCallback<MapSources<T>, MapOldSources<T, Immediate>>,
  options?: WatchDebouncedOptions<Immediate>
): WatchStopHandle
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>
): WatchStopHandle
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>
): WatchStopHandle
export { watchDebounced as debouncedWatch }

Source

SourceDemoDocs

Contributors

webfansplz
Anthony Fu
lvjiaxuan

Changelog

v8.7.0 on 6/16/2022
bb0ac - fix(watch*): fix T type for WatchCallback (#1692)
v8.5.0 on 5/16/2022
9c72a - feat: new maxWait option (#1579)
watchDebounced has loaded