Necesito detener el watch() pero los documentos realmente no explican cómo hacerlo.
Este observador se ejecuta hasta que finaliza el bucle (1000 segundos):
const state = reactive({ val: 0 }) watch(() => state.val, () => { console.log(state.val) }) for (let i = 1; i < 1000; i++) { setTimeout(function timer() { state.val = state.val + 1 }, i * 1000); } ¿Cómo detengo al observador después de ejecutar una vez? Usar watchEffect no es una opción porque para mi caso de uso, el observador debe ejecutarse varias veces antes de detenerse, lo que no se describe en este ejemplo simplificado. Según tengo entendido, watchEffect se ejecuta solo una vez (después del inicio).
La función "reloj" devuelve una función que detiene al observador cuando se llama:
const unwatch = watch(someProperty, () => { }); unwatch(); // It will stop watchingPara ver un cambio solo una vez:
const unwatch = watch(someProperty, () => { // Do what your have to do unwatch(); });