From 141a5e188cbf6fbc433173aab922940c7d2471be Mon Sep 17 00:00:00 2001 From: Evan You Date: Thu, 16 Sep 2021 12:14:33 -0400 Subject: [PATCH] fix(suspense): fix suspense slot inside deoptimized slot call fix #4556 --- packages/runtime-core/src/components/Suspense.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/runtime-core/src/components/Suspense.ts b/packages/runtime-core/src/components/Suspense.ts index bb5ef9b3..8408cab3 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()