Sfoglia il codice sorgente

fix(suspense): fix suspense slot inside deoptimized slot call

fix #4556
Evan You 4 anni fa
parent
commit
141a5e188c
1 ha cambiato i file con 5 aggiunte e 4 eliminazioni
  1. 5 4
      packages/runtime-core/src/components/Suspense.ts

+ 5 - 4
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()