From: Evan You Date: Wed, 18 May 2022 08:36:00 +0000 (+0800) Subject: fix(runtime-core): adjust force diff of dev root fragments X-Git-Tag: v3.2.34~14 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cdda49bbfb1939c9cf812d624992ea7bdae74c78;p=thirdparty%2Fvuejs%2Fcore.git fix(runtime-core): adjust force diff of dev root fragments fix #5946 --- diff --git a/packages/runtime-core/src/renderer.ts b/packages/runtime-core/src/renderer.ts index 8af783a20c..1f3c2a918d 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