From cdda49bbfb1939c9cf812d624992ea7bdae74c78 Mon Sep 17 00:00:00 2001 From: Evan You Date: Wed, 18 May 2022 16:36:00 +0800 Subject: [PATCH] fix(runtime-core): adjust force diff of dev root fragments fix #5946 --- packages/runtime-core/src/renderer.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/runtime-core/src/renderer.ts b/packages/runtime-core/src/renderer.ts index 8af783a20c9..1f3c2a918d4 100644 --- a/packages/runtime-core/src/renderer.ts +++ b/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