getter = () => traverse(baseGetter(), depth)
}
+ const scope = getCurrentScope()
+ const watchHandle: WatchHandle = () => {
+ effect.stop()
+ if (scope) {
+ remove(scope.effects, effect)
+ }
+ }
+
if (once) {
if (cb) {
const _cb = cb
cb = (...args) => {
_cb(...args)
- effect.stop()
+ watchHandle()
}
} else {
const _getter = getter
getter = () => {
_getter()
- effect.stop()
+ watchHandle()
}
}
}
effect.run()
}
- const scope = getCurrentScope()
- const watchHandle: WatchHandle = () => {
- effect.stop()
- if (scope) {
- remove(scope.effects, effect)
- }
- }
-
watchHandle.pause = effect.pause.bind(effect)
watchHandle.resume = effect.resume.bind(effect)
watchHandle.stop = watchHandle
expect(scope.effects.length).toBe(1)
unwatch!()
expect(scope.effects.length).toBe(0)
+
+ scope.run(() => {
+ watch(num, () => {}, { once: true, immediate: true })
+ })
+ expect(scope.effects.length).toBe(0)
})
// simplified case of VueUse syncRef