瀏覽代碼

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

fix #5946
Evan You 4 年之前
父節點
當前提交
cdda49bbfb
共有 1 個文件被更改,包括 6 次插入4 次删除
  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