]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
Revert "fix(reactivity): fix side effect computed dirty level (#11183)"
authorEvan You <evan@vuejs.org>
Fri, 28 Jun 2024 01:28:51 +0000 (09:28 +0800)
committerEvan You <evan@vuejs.org>
Fri, 28 Jun 2024 01:28:51 +0000 (09:28 +0800)
This reverts commit 3bd79e3e5ed960fc42cbf77bc61a97d2c03557c0.

packages/reactivity/__tests__/computed.spec.ts
packages/reactivity/src/computed.ts
packages/reactivity/src/effect.ts

index 9a91eed638924ecc8f5d3e72c167a8bd2b2c14bd..0122f4e439181825064c2284b0ab6bc92fd4d3ff 100644 (file)
@@ -708,63 +708,6 @@ describe('reactivity/computed', () => {
     expect(COMPUTED_SIDE_EFFECT_WARN).toHaveBeenWarned()
   })
 
-  it('should chained computeds keep reactivity when computed effect happens', async () => {
-    const v = ref('Hello')
-    const c = computed(() => {
-      v.value += ' World'
-      return v.value
-    })
-    const d = computed(() => c.value)
-    const e = computed(() => d.value)
-    const Comp = {
-      setup: () => {
-        return () => d.value + ' | ' + e.value
-      },
-    }
-    const root = nodeOps.createElement('div')
-
-    render(h(Comp), root)
-    await nextTick()
-    expect(serializeInner(root)).toBe('Hello World | Hello World')
-
-    v.value += ' World'
-    await nextTick()
-    expect(serializeInner(root)).toBe(
-      'Hello World World World | Hello World World World',
-    )
-    expect(COMPUTED_SIDE_EFFECT_WARN).toHaveBeenWarned()
-  })
-
-  it('should keep dirty level when side effect computed value changed', () => {
-    const v = ref(0)
-    const c = computed(() => {
-      v.value += 1
-      return v.value
-    })
-    const d = computed(() => {
-      return { d: c.value }
-    })
-
-    const Comp = {
-      setup: () => {
-        return () => {
-          return [d.value.d, d.value.d]
-        }
-      },
-    }
-
-    const root = nodeOps.createElement('div')
-    render(h(Comp), root)
-
-    expect(d.value.d).toBe(1)
-    expect(serializeInner(root)).toBe('11')
-    expect(c.effect._dirtyLevel).toBe(
-      DirtyLevels.MaybeDirty_ComputedSideEffect_Origin,
-    )
-    expect(d.effect._dirtyLevel).toBe(DirtyLevels.MaybeDirty_ComputedSideEffect)
-    expect(COMPUTED_SIDE_EFFECT_WARN).toHaveBeenWarned()
-  })
-
   it('debug: onTrigger (ref)', () => {
     let events: DebuggerEvent[] = []
     const onTrigger = vi.fn((e: DebuggerEvent) => {
index e764b60248ccb455d07d8ad2227325e43b9d72b7..91eac36012f7afc7a09d716ed43a131c8dc925bc 100644 (file)
@@ -71,15 +71,11 @@ export class ComputedRefImpl<T> {
   get value() {
     // the computed ref may get wrapped by other proxies e.g. readonly() #3376
     const self = toRaw(this)
-    const lastDirtyLevel = self.effect._dirtyLevel
     if (
       (!self._cacheable || self.effect.dirty) &&
       hasChanged(self._value, (self._value = self.effect.run()!))
     ) {
-      // keep dirty level when side effect computed's value changed
-      if (lastDirtyLevel !== DirtyLevels.MaybeDirty_ComputedSideEffect) {
-        triggerRefValue(self, DirtyLevels.Dirty)
-      }
+      triggerRefValue(self, DirtyLevels.Dirty)
     }
     trackRefValue(self)
     if (
index 6817931f0e54657b938e109a2fecd3d4349f52fc..40868545b4b390074f89c9cd7c7d1b3df3c79cdb 100644 (file)
@@ -93,10 +93,8 @@ export class ReactiveEffect<T = any> {
           if (
             dep.computed.effect._dirtyLevel ===
             DirtyLevels.MaybeDirty_ComputedSideEffect_Origin
-          ) {
-            resetTracking()
+          )
             return true
-          }
           triggerComputed(dep.computed)
           if (this._dirtyLevel >= DirtyLevels.Dirty) {
             break