Ver código fonte

fix(runtime-core): do not call transition enter hooks when mounting in suspense (#1588)

fix #1583
underfin 5 anos atrás
pai
commit
246ec5c594
1 arquivos alterados com 5 adições e 2 exclusões
  1. 5 2
      packages/runtime-core/src/renderer.ts

+ 5 - 2
packages/runtime-core/src/renderer.ts

@@ -736,14 +736,17 @@ function baseCreateRenderer(
     }
     }
 
 
     hostInsert(el, container, anchor)
     hostInsert(el, container, anchor)
+    // #1583 For inside suspense case, enter hook should call when suspense resolved
+    const needCallTransitionHooks =
+      !parentSuspense && transition && !transition.persisted
     if (
     if (
       (vnodeHook = props && props.onVnodeMounted) ||
       (vnodeHook = props && props.onVnodeMounted) ||
-      (transition && !transition.persisted) ||
+      needCallTransitionHooks ||
       dirs
       dirs
     ) {
     ) {
       queuePostRenderEffect(() => {
       queuePostRenderEffect(() => {
         vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode)
         vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode)
-        transition && !transition.persisted && transition.enter(el)
+        needCallTransitionHooks && transition!.enter(el)
         dirs && invokeDirectiveHook(vnode, null, parentComponent, 'mounted')
         dirs && invokeDirectiveHook(vnode, null, parentComponent, 'mounted')
       }, parentSuspense)
       }, parentSuspense)
     }
     }