diff --git a/packages/runtime-core/src/renderer.ts b/packages/runtime-core/src/renderer.ts index f0182c16f64..cccc4ba7efa 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. @@ -1423,6 +1424,9 @@ function baseCreateRenderer( queuePostRenderEffect(a, parentSuspense) } instance.isMounted = true + + // #2458: deference mount-only object parameters to prevent memleaks + initialVNode = container = anchor = null as any } else { // updateComponent // This is triggered by mutation of component's own state (next: null)