Przeglądaj źródła

refactor: adjust custom element hmr, fix tests

Evan You 4 lat temu
rodzic
commit
231dafd55a
1 zmienionych plików z 4 dodań i 2 usunięć
  1. 4 2
      packages/runtime-core/src/hmr.ts

+ 4 - 2
packages/runtime-core/src/hmr.ts

@@ -7,7 +7,7 @@ import {
   ClassComponent,
   ClassComponent,
   isClassComponent
   isClassComponent
 } from './component'
 } from './component'
-import { nextTick, queueJob } from './scheduler'
+import { queueJob, queuePostFlushCb } from './scheduler'
 import { extend } from '@vue/shared'
 import { extend } from '@vue/shared'
 import { warn } from './warning'
 import { warn } from './warning'
 
 
@@ -124,7 +124,7 @@ function reload(id: string, newComp: ComponentOptions | ClassComponent) {
     // on patch.
     // on patch.
     hmrDirtyComponents.add(component)
     hmrDirtyComponents.add(component)
     // 3. Make sure to unmark the component after the reload.
     // 3. Make sure to unmark the component after the reload.
-    nextTick(() => {
+    queuePostFlushCb(() => {
       hmrDirtyComponents.delete(component)
       hmrDirtyComponents.delete(component)
     })
     })
   }
   }
@@ -135,7 +135,9 @@ function reload(id: string, newComp: ComponentOptions | ClassComponent) {
 
 
     if (instance.ceReload) {
     if (instance.ceReload) {
       // custom element
       // custom element
+      hmrDirtyComponents.add(component)
       instance.ceReload()
       instance.ceReload()
+      hmrDirtyComponents.delete(component)
     } else if (instance.parent) {
     } else if (instance.parent) {
       // 4. Force the parent instance to re-render. This will cause all updated
       // 4. Force the parent instance to re-render. This will cause all updated
       // components to be unmounted and re-mounted. Queue the update so that we
       // components to be unmounted and re-mounted. Queue the update so that we