From d12edffb59b3b0369d2a456b76518f59deaf9372 Mon Sep 17 00:00:00 2001 From: Bas van Meurs Date: Thu, 22 Oct 2020 11:45:30 +0200 Subject: [PATCH 1/3] fix(setupRenderEffect): deference mount-only object parameters. closes #2458 --- packages/runtime-core/src/renderer.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/runtime-core/src/renderer.ts b/packages/runtime-core/src/renderer.ts index f0182c16f64..6bfeddbb99e 100644 --- a/packages/runtime-core/src/renderer.ts +++ b/packages/runtime-core/src/renderer.ts @@ -1423,6 +1423,11 @@ function baseCreateRenderer( queuePostRenderEffect(a, parentSuspense) } instance.isMounted = true + + // #2458: deference mount-only object parameters to prevent memleaks + initialVNode = undefined as any + container = null as any + anchor = null } else { // updateComponent // This is triggered by mutation of component's own state (next: null) From 0d7c30d8aab243ce8c8282beb7e9ab2658a1eb45 Mon Sep 17 00:00:00 2001 From: Bas van Meurs Date: Thu, 22 Oct 2020 11:57:52 +0200 Subject: [PATCH 2/3] fix(setupRenderEffect): make sure that hooks receive the correct initialVNode --- packages/runtime-core/src/renderer.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/runtime-core/src/renderer.ts b/packages/runtime-core/src/renderer.ts index 6bfeddbb99e..e3ac23769ba 100644 --- a/packages/runtime-core/src/renderer.ts +++ b/packages/runtime-core/src/renderer.ts @@ -1408,8 +1408,9 @@ function baseCreateRenderer( } // onVnodeMounted if ((vnodeHook = props && props.onVnodeMounted)) { + const scopedInitialVNode = initialVNode queuePostRenderEffect(() => { - invokeVNodeHook(vnodeHook!, parent, initialVNode) + invokeVNodeHook(vnodeHook!, parent, scopedInitialVNode) }, parentSuspense) } // activated hook for keep-alive roots. From 21a5c166dc619a64712d666aac9abbc976ac7955 Mon Sep 17 00:00:00 2001 From: Evan You Date: Fri, 4 Dec 2020 17:59:15 -0500 Subject: [PATCH 3/3] Update renderer.ts --- packages/runtime-core/src/renderer.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/runtime-core/src/renderer.ts b/packages/runtime-core/src/renderer.ts index e3ac23769ba..cccc4ba7efa 100644 --- a/packages/runtime-core/src/renderer.ts +++ b/packages/runtime-core/src/renderer.ts @@ -1426,9 +1426,7 @@ function baseCreateRenderer( instance.isMounted = true // #2458: deference mount-only object parameters to prevent memleaks - initialVNode = undefined as any - container = null as any - anchor = null + initialVNode = container = anchor = null as any } else { // updateComponent // This is triggered by mutation of component's own state (next: null)