From: Evan You Date: Thu, 16 Sep 2021 16:14:33 +0000 (-0400) Subject: fix(suspense): fix suspense slot inside deoptimized slot call X-Git-Tag: v3.2.12~17 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=141a5e188cbf6fbc433173aab922940c7d2471be;p=thirdparty%2Fvuejs%2Fcore.git fix(suspense): fix suspense slot inside deoptimized slot call fix #4556 --- diff --git a/packages/runtime-core/src/components/Suspense.ts b/packages/runtime-core/src/components/Suspense.ts index bb5ef9b3ce..8408cab388 100644 --- a/packages/runtime-core/src/components/Suspense.ts +++ b/packages/runtime-core/src/components/Suspense.ts @@ -7,7 +7,8 @@ import { closeBlock, currentBlock, Comment, - createVNode + createVNode, + isBlockTreeEnabled } from '../vnode' import { isFunction, isArray, ShapeFlags, toNumber } from '@vue/shared' import { ComponentInternalInstance, handleSetupResult } from '../component' @@ -727,8 +728,8 @@ function normalizeSuspenseChildren(vnode: VNode) { function normalizeSuspenseSlot(s: any) { let block: VNode[] | null | undefined if (isFunction(s)) { - const isCompiledSlot = s._c - if (isCompiledSlot) { + const trackBlock = isBlockTreeEnabled && s._c + if (trackBlock) { // disableTracking: false // allow block tracking for compiled slots // (see ./componentRenderContext.ts) @@ -736,7 +737,7 @@ function normalizeSuspenseSlot(s: any) { openBlock() } s = s() - if (isCompiledSlot) { + if (trackBlock) { s._d = true block = currentBlock closeBlock()