]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
fix(Teleport): avoid changing the reference of vnode.dynamicChildren (#3642)
authorHcySunYang <HcySunYang@outlook.com>
Fri, 7 May 2021 22:04:36 +0000 (06:04 +0800)
committerGitHub <noreply@github.com>
Fri, 7 May 2021 22:04:36 +0000 (18:04 -0400)
fix #3641

packages/runtime-core/src/components/Teleport.ts

index 5bbe899e4c8ac53a3fdc9cdcb26df1767f99b192..764e9a86dc80ab5193092a81f6427ad91e8e4e35 100644 (file)
@@ -84,13 +84,13 @@ export const TeleportImpl = {
     } = internals
 
     const disabled = isTeleportDisabled(n2.props)
-    const { shapeFlag, children } = n2
+    let { shapeFlag, children, dynamicChildren } = n2
 
     // #3302
     // HMR updated, force full diff
     if (__DEV__ && isHmrUpdating) {
       optimized = false
-      n2.dynamicChildren = null
+      dynamicChildren = null
     }
 
     if (n1 == null) {
@@ -146,11 +146,11 @@ export const TeleportImpl = {
       const currentAnchor = wasDisabled ? mainAnchor : targetAnchor
       isSVG = isSVG || isTargetSVG(target)
 
-      if (n2.dynamicChildren) {
+      if (dynamicChildren) {
         // fast path when the teleport happens to be a block root
         patchBlockChildren(
           n1.dynamicChildren!,
-          n2.dynamicChildren,
+          dynamicChildren,
           currentContainer,
           parentComponent,
           parentSuspense,