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

fix(watch): revert watch behavior when watching shallow reactive objects

close #9965
Evan You 2 роки тому
батько
коміт
a9f781a92c

+ 2 - 2
packages/runtime-core/__tests__/apiWatch.spec.ts

@@ -187,7 +187,7 @@ describe('api: watch', () => {
   })
 
   // #9916
-  it('directly watching shallow reactive array', async () => {
+  it('watching shallow reactive array with deep: false', async () => {
     class foo {
       prop1: ShallowRef<string> = shallowRef('')
       prop2: string = ''
@@ -198,7 +198,7 @@ describe('api: watch', () => {
 
     const collection = shallowReactive([obj1, obj2])
     const cb = vi.fn()
-    watch(collection, cb)
+    watch(collection, cb, { deep: false })
 
     collection[0].prop1.value = 'foo'
     await nextTick()

+ 2 - 2
packages/runtime-core/src/apiWatch.ts

@@ -225,8 +225,8 @@ function doWatch(
   const reactiveGetter = (source: object) =>
     deep === true
       ? source // traverse will happen in wrapped getter below
-      : // for shallow or deep: false, only traverse root-level properties
-        traverse(source, isShallow(source) || deep === false ? 1 : undefined)
+      : // for deep: false, only traverse root-level properties
+        traverse(source, deep === false ? 1 : undefined)
 
   let getter: () => any
   let forceTrigger = false