]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
refactor(runtime-core): remove the deactivated branch in unmountComponent method...
authorzhangzhonghe <38434641+zhangzhonghe@users.noreply.github.com>
Wed, 2 Sep 2020 01:03:50 +0000 (09:03 +0800)
committerGitHub <noreply@github.com>
Wed, 2 Sep 2020 01:03:50 +0000 (21:03 -0400)
packages/runtime-core/__tests__/components/KeepAlive.spec.ts
packages/runtime-core/src/renderer.ts

index 8eee2c05e6b9204067a2704704640829f571f745..e1bf3f49b0e35528419fce4aa50057367267a8cd 100644 (file)
@@ -347,21 +347,33 @@ describe('KeepAlive', () => {
     })
 
     test('max', async () => {
-      const spyA = jest.fn()
-      const spyB = jest.fn()
-      const spyC = jest.fn()
-      const spyAD = jest.fn()
-      const spyBD = jest.fn()
-      const spyCD = jest.fn()
+      const spyAC = jest.fn()
+      const spyBC = jest.fn()
+      const spyCC = jest.fn()
+      const spyAA = jest.fn()
+      const spyBA = jest.fn()
+      const spyCA = jest.fn()
+      const spyADA = jest.fn()
+      const spyBDA = jest.fn()
+      const spyCDA = jest.fn()
+      const spyAUM = jest.fn()
+      const spyBUM = jest.fn()
+      const spyCUM = jest.fn()
 
       function assertCount(calls: number[]) {
         expect([
-          spyA.mock.calls.length,
-          spyAD.mock.calls.length,
-          spyB.mock.calls.length,
-          spyBD.mock.calls.length,
-          spyC.mock.calls.length,
-          spyCD.mock.calls.length
+          spyAC.mock.calls.length,
+          spyAA.mock.calls.length,
+          spyADA.mock.calls.length,
+          spyAUM.mock.calls.length,
+          spyBC.mock.calls.length,
+          spyBA.mock.calls.length,
+          spyBDA.mock.calls.length,
+          spyBUM.mock.calls.length,
+          spyCC.mock.calls.length,
+          spyCA.mock.calls.length,
+          spyCDA.mock.calls.length,
+          spyCUM.mock.calls.length
         ]).toEqual(calls)
       }
 
@@ -369,18 +381,24 @@ describe('KeepAlive', () => {
       const views: Record<string, ComponentOptions> = {
         a: {
           render: () => `one`,
-          created: spyA,
-          unmounted: spyAD
+          created: spyAC,
+          activated: spyAA,
+          deactivated: spyADA,
+          unmounted: spyAUM
         },
         b: {
           render: () => `two`,
-          created: spyB,
-          unmounted: spyBD
+          created: spyBC,
+          activated: spyBA,
+          deactivated: spyBDA,
+          unmounted: spyBUM
         },
         c: {
           render: () => `three`,
-          created: spyC,
-          unmounted: spyCD
+          created: spyCC,
+          activated: spyCA,
+          deactivated: spyCDA,
+          unmounted: spyCUM
         }
       }
 
@@ -392,26 +410,26 @@ describe('KeepAlive', () => {
         }
       }
       render(h(App), root)
-      assertCount([1, 0, 0, 0, 0, 0])
+      assertCount([1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
 
       viewRef.value = 'b'
       await nextTick()
-      assertCount([1, 0, 1, 0, 0, 0])
+      assertCount([1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0])
 
       viewRef.value = 'c'
       await nextTick()
       // should prune A because max cache reached
-      assertCount([1, 1, 1, 0, 1, 0])
+      assertCount([1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0])
 
       viewRef.value = 'b'
       await nextTick()
       // B should be reused, and made latest
-      assertCount([1, 1, 1, 0, 1, 0])
+      assertCount([1, 1, 1, 1, 1, 2, 1, 0, 1, 1, 1, 0])
 
       viewRef.value = 'a'
       await nextTick()
       // C should be pruned because B was used last so C is the oldest cached
-      assertCount([2, 1, 1, 0, 1, 1])
+      assertCount([2, 2, 1, 1, 1, 2, 2, 0, 1, 1, 1, 1])
     })
   })
 
index 9c69c6d40dd2a6b939d2d355e6394fe45de408de..ee020298423855209ba82b0b84ad81d5008e5c5a 100644 (file)
@@ -2096,7 +2096,7 @@ function baseCreateRenderer(
       unregisterHMR(instance)
     }
 
-    const { bum, effects, update, subTree, um, da, isDeactivated } = instance
+    const { bum, effects, update, subTree, um } = instance
     // beforeUnmount hook
     if (bum) {
       invokeArrayFns(bum)
@@ -2116,14 +2116,6 @@ function baseCreateRenderer(
     if (um) {
       queuePostRenderEffect(um, parentSuspense)
     }
-    // deactivated hook
-    if (
-      da &&
-      !isDeactivated &&
-      instance.vnode.shapeFlag & ShapeFlags.COMPONENT_SHOULD_KEEP_ALIVE
-    ) {
-      queuePostRenderEffect(da, parentSuspense)
-    }
     queuePostRenderEffect(() => {
       instance.isUnmounted = true
     }, parentSuspense)