diff --git a/packages/runtime-core/__tests__/apiWatch.spec.ts b/packages/runtime-core/__tests__/apiWatch.spec.ts index 65710c65..ed2276f7 100644 --- a/packages/runtime-core/__tests__/apiWatch.spec.ts +++ b/packages/runtime-core/__tests__/apiWatch.spec.ts @@ -344,6 +344,25 @@ describe('api: watch', () => { expect(cb).toHaveBeenCalled() }) + it('ignore lazy', async () => { + const count = ref(0) + let dummy + watch( + () => { + dummy = count.value + }, + { lazy: true } + ) + expect(dummy).toBeUndefined() + + await nextTick() + expect(dummy).toBe(0) + + count.value++ + await nextTick() + expect(dummy).toBe(1) + }) + it('onTrack', async () => { const events: DebuggerEvent[] = [] let dummy diff --git a/packages/runtime-core/src/apiWatch.ts b/packages/runtime-core/src/apiWatch.ts index efd3dfd4..22828316 100644 --- a/packages/runtime-core/src/apiWatch.ts +++ b/packages/runtime-core/src/apiWatch.ts @@ -197,7 +197,7 @@ function doWatch( scheduler: applyCb ? () => scheduler(applyCb) : scheduler }) - if (!lazy) { + if (!lazy || !cb) { if (applyCb) { scheduler(applyCb) } else {