Jelajahi Sumber

fix(runtime-core): condition for parent node check should be any different nodes

fix #622
Evan You 6 tahun lalu
induk
melakukan
c35fea3d60
1 mengubah file dengan 4 tambahan dan 5 penghapusan
  1. 4 5
      packages/runtime-core/src/renderer.ts

+ 4 - 5
packages/runtime-core/src/renderer.ts

@@ -601,10 +601,9 @@ export function createRenderer<
         // - In the case of a Fragment, we need to provide the actual parent
         // of the Fragment itself so it can move its children.
         oldVNode.type === Fragment ||
-        // - In the case of Comment nodes, this is likely a v-if toggle, which
-        // also needs the correct parent container.
-        oldVNode.type === Comment ||
-        newVNode.type === Comment ||
+        // - In the case of different nodes, there is going to be a replacement
+        // which also requires the correct parent container
+        !isSameVNodeType(oldVNode, newVNode) ||
         // - In the case of a component, it could contain anything.
         oldVNode.shapeFlag & ShapeFlags.COMPONENT
           ? hostParentNode(oldVNode.el!)!
@@ -613,7 +612,7 @@ export function createRenderer<
             fallbackContainer
       patch(
         oldVNode,
-        newChildren[i],
+        newVNode,
         container,
         null,
         parentComponent,