Category | Watch |
---|---|
Export Size | 708 B |
Last Changed | 10 months ago |
Alias | ignorableWatch |
Ignorable watch
Extended watch
that returns extra ignoreUpdates(updater)
and ignorePrevAsyncUpdates()
to ignore particular updates to the source.
import { watchIgnorable } from '@vueuse/core' import { nextTick, ref } from 'vue' const source = ref('foo') const { stop, ignoreUpdates } = watchIgnorable( source, v => console.log(`Changed to ${v}!`), ) source.value = 'bar' await nextTick() // logs: Changed to bar! ignoreUpdates(() => { source.value = 'foobar' }) await nextTick() // (nothing happened) source.value = 'hello' await nextTick() // logs: Changed to hello! ignoreUpdates(() => { source.value = 'ignored' }) source.value = 'logged' await nextTick() // logs: Changed to logged!
watchIgnorable
accepts the same options as watch
and uses the same defaults. So, by default the composable works using flush: 'pre'
.
ignorePrevAsyncUpdates
This feature is only for async flush 'pre'
and 'post'
. If flush: 'sync'
is used, ignorePrevAsyncUpdates()
is a no-op as the watch will trigger immediately after each update to the source. It is still provided for sync flush so the code can be more generic.
import { watchIgnorable } from '@vueuse/core' import { nextTick, ref } from 'vue' const source = ref('foo') const { ignorePrevAsyncUpdates } = watchIgnorable( source, v => console.log(`Changed to ${v}!`), ) source.value = 'bar' await nextTick() // logs: Changed to bar! source.value = 'good' source.value = 'by' ignorePrevAsyncUpdates() await nextTick() // (nothing happened) source.value = 'prev' ignorePrevAsyncUpdates() source.value = 'after' await nextTick() // logs: Changed to after!
export type IgnoredUpdater = (updater: () => void) => void export interface WatchIgnorableReturn { ignoreUpdates: IgnoredUpdater ignorePrevAsyncUpdates: () => void stop: WatchStopHandle } export declare function watchIgnorable< T extends Readonly<WatchSource<unknown>[]>, Immediate extends Readonly<boolean> = false >( sources: [...T], cb: WatchCallback<MapSources<T>, MapOldSources<T, Immediate>>, options?: WatchWithFilterOptions<Immediate> ): WatchIgnorableReturn export declare function watchIgnorable< T, Immediate extends Readonly<boolean> = false >( source: WatchSource<T>, cb: WatchCallback<T, Immediate extends true ? T | undefined : T>, options?: WatchWithFilterOptions<Immediate> ): WatchIgnorableReturn export declare function watchIgnorable< T extends object, Immediate extends Readonly<boolean> = false >( source: T, cb: WatchCallback<T, Immediate extends true ? T | undefined : T>, options?: WatchWithFilterOptions<Immediate> ): WatchIgnorableReturn export { watchIgnorable as ignorableWatch }
© 2019-present Anthony Fu
Licensed under the MIT License.
https://vueuse.org/shared/watchIgnorable/