Kaynağa Gözat

fix(hmr): fix HMR for nested non-SFC components (#4077)

Yaroslav Sych 3 yıl önce
ebeveyn
işleme
96eb745254
1 değiştirilmiş dosya ile 8 ekleme ve 5 silme
  1. 8 5
      packages/runtime-core/src/componentProps.ts

+ 8 - 5
packages/runtime-core/src/componentProps.ts

@@ -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)
   ) {