--- category: Watch --- # whenever Shorthand for watching value to be truthy. ## Usage ```js import { useAsyncState, whenever } from '@vueuse/core' const { state, isReady } = useAsyncState( fetch('https://jsonplaceholder.typicode.com/todos/1').then(t => t.json()), {}, ) whenever(isReady, () => console.log(state)) ``` ```ts import { whenever } from '@vueuse/core' // ---cut--- // this whenever(ready, () => console.log(state)) // is equivalent to: watch(ready, (isReady) => { if (isReady) console.log(state) }) ``` ### Callback Function Same as `watch`, the callback will be called with `cb(value, oldValue, onInvalidate)`. ```ts import { whenever } from '@vueuse/core' // ---cut--- whenever(height, (current, lastHeight) => { if (current > lastHeight) console.log(`Increasing height by ${current - lastHeight}`) }) ``` ### Computed Same as `watch`, you can pass a getter function to calculate on each change. ```ts import { whenever } from '@vueuse/core' // ---cut--- // this whenever( () => counter.value === 7, () => console.log('counter is 7 now!'), ) ``` ### Options Options and defaults are same with `watch`. ```ts import { whenever } from '@vueuse/core' // ---cut--- // this whenever( () => counter.value === 7, () => console.log('counter is 7 now!'), { flush: 'sync' }, ) ``` ## Type Declarations ```ts export interface WheneverOptions extends WatchOptions { /** * Only trigger once when the condition is met * * Override the `once` option in `WatchOptions` * * @default false */ once?: boolean } /** * Shorthand for watching value to be truthy * * @see https://vueuse.org/whenever */ export declare function whenever( source: WatchSource, cb: WatchCallback, options?: WheneverOptions, ): WatchHandle ```