Vize

watch-pausable

Watch sources like Vue's watch, with pause and resume.

Package @vizejs/composable/watch-pausable
Own the source vize lib pull composable:watch-pausable
Runtime exports watchPausable
Gzip budget 512 B

Usage

import { watchPausable } from "@vizejs/composable/watch-pausable";

Runtime contract

Utility Category Stability SSR Hydration Cleanup Targets Host globals Uses
watchPausable reactivity experimental safe not-applicable caller, reactive-scope web, server, worker, native, desktop, terminal — —

API

watchPausable

Watch sources like Vue's watch, with pause and resume. Unlike the pause() built into Vue 3.5 watch handles, which delivers one catch-up call on resume, changes made while paused are dropped: the callback only ever sees changes that happened while active. The old value passed after a resume is the value from the most recent change Vue observed, whether or not it was delivered. The watcher follows the owning reactive scope and is safe during server rendering.

function watchPausable< const Sources extends WatchSources, Immediate extends Readonly<boolean> = false, >( source: Sources, callback: WatchHelperCallback<Sources, Immediate>, options?: WatchPausableOptions<Immediate>, ): PausableWatchHandle
const { pause, resume } = watchPausable(form, persist, { deep: true });
pause();
form.name = "x"; // not persisted
resume();

watchPausable

function watchPausable( source: WatchSources, callback: WatchCallback<unknown, unknown>, options: WatchPausableOptions<boolean> = {}, ): PausableWatchHandle

Types

PausableWatchHandle

Controls returned by watchPausable.

Member Type Description
isActive Readonly<ShallowRef<boolean>> Whether changes are currently delivered to the callback.
pause () => void Drop changes until PausableWatchHandle.resume. Idempotent.
resume () => void Deliver changes again. Changes made while paused are not replayed.
stop () => void Stop watching permanently.

WatchPausableOptions

Options for watchPausable.

Member Type Description
initiallyPaused? boolean Start in the paused state.