Переглянути джерело

fix(watch): ignore lazy option in simple watch (#546)

* fix(watch): ignore lazy option in simple watch

* test: ignore lazy option in simple watch
Yang Mingshan 6 роки тому
батько
коміт
c2c9c2b57e

+ 19 - 0
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

+ 1 - 1
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 {