Explorar o código

fix(runtime-core): adjust force diff of dev root fragments

fix #5946
Evan You %!s(int64=4) %!d(string=hai) anos
pai
achega
cdda49bbfb
Modificáronse 1 ficheiros con 6 adicións e 4 borrados
  1. 6 4
      packages/runtime-core/src/renderer.ts

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

@@ -1064,8 +1064,12 @@ function baseCreateRenderer(
 
     let { patchFlag, dynamicChildren, slotScopeIds: fragmentSlotScopeIds } = n2
 
-    if (__DEV__ && isHmrUpdating) {
-      // HMR updated, force full diff
+    if (
+      __DEV__ &&
+      // #5523 dev root fragment may inherit directives
+      (isHmrUpdating || patchFlag & PatchFlags.DEV_ROOT_FRAGMENT)
+    ) {
+      // HMR updated / Dev root fragment (w/ comments), force full diff
       patchFlag = 0
       optimized = false
       dynamicChildren = null
@@ -1098,8 +1102,6 @@ function baseCreateRenderer(
       if (
         patchFlag > 0 &&
         patchFlag & PatchFlags.STABLE_FRAGMENT &&
-        // #5523 dev root fragment may inherit directives so always force update
-        !(__DEV__ && patchFlag & PatchFlags.DEV_ROOT_FRAGMENT) &&
         dynamicChildren &&
         // #2715 the previous fragment could've been a BAILed one as a result
         // of renderSlot() with no valid children