]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
fix(hmr): fix HMR for nested non-SFC components (#4077)
authorYaroslav Sych <turrsis@gmail.com>
Tue, 30 Aug 2022 06:42:22 +0000 (09:42 +0300)
committerGitHub <noreply@github.com>
Tue, 30 Aug 2022 06:42:22 +0000 (02:42 -0400)
packages/runtime-core/src/componentProps.ts

index 51b77c56175fca5b085081dc09cefb4f4d6c1ce0..09b487811b5b85aa16852fccf42afe73f975b622 100644 (file)
@@ -192,6 +192,13 @@ export function initProps(
   instance.attrs = attrs
 }
 
+function isInHmrContext(instance: ComponentInternalInstance | null) {
+  while (instance) {
+    if (instance.type.__hmrId) return true
+    instance = instance.parent
+  }
+}
+
 export function updateProps(
   instance: ComponentInternalInstance,
   rawProps: Data | null,
@@ -211,11 +218,7 @@ export function updateProps(
     // always force full diff in dev
     // - #1942 if hmr is enabled with sfc component
     // - vite#872 non-sfc component used by sfc component
-    !(
-      __DEV__ &&
-      (instance.type.__hmrId ||
-        (instance.parent && instance.parent.type.__hmrId))
-    ) &&
+    !(__DEV__ && isInHmrContext(instance)) &&
     (optimized || patchFlag > 0) &&
     !(patchFlag & PatchFlags.FULL_PROPS)
   ) {