watchTriggerable
watchTriggerable
手動でトリガーできるウォッチ
使用法
WatchCallbackを手動でトリガーすることをサポートするwatchラッパーで、WatchCallbackを即座に実行するための追加のtriggerを返します。
import { watchTriggerable } from '@vueuse/core'
import { nextTick, shallowRef } from 'vue'
const source = shallowRef(0)
const { trigger, ignoreUpdates } = watchTriggerable(
source,
v => console.log(`Changed to ${v}!`),
)
source.value = 'bar'
await nextTick() // ログ: Changed to bar!
// `trigger`を介したWatchCallbackの実行は待機を必要としません
trigger() // ログ: Changed to bar!
onCleanup
onCleanupパラメータを使用するwatchを手動で呼び出したい場合、単にWatchCallbackを取り出して呼び出すだけでは、onCleanupパラメータを簡単に実装することはできません。
watchTriggerableを使用することで、この問題を解決できます。
import { watchTriggerable } from '@vueuse/core'
import { shallowRef } from 'vue'
const source = shallowRef(0)
const { trigger } = watchTriggerable(
source,
async (v, _, onCleanup) => {
let canceled = false
onCleanup(() => canceled = true)
await new Promise(resolve => setTimeout(resolve, 500))
if (canceled)
return
console.log(`The value is "${v}"\n`)
},
)
source.value = 1 // ログなし
await trigger() // ログ(500 ms後): The value is "1"
© 2019–PRESENT Anthony Fu https://github.com/antfu
※このページは Nuxt.js 公式ドキュメントの翻訳ページです。
公式ドキュメントの該当ページはこちら:
#