import { PatchFlags, SlotFlags } from '@vue/shared'
import { warn } from '../warning'
-export let isRenderingTemplateSlot = false
+export let shouldTrackInSlotRendering = 0
/**
* Compiler runtime helper for rendering `<slot/>`
// invocation interfering with template-based block tracking, but in
// `renderSlot` we can be sure that it's template-based so we can force
// enable it.
- isRenderingTemplateSlot = true
+ shouldTrackInSlotRendering++
const rendered = (openBlock(),
createBlock(
Fragment,
? PatchFlags.STABLE_FRAGMENT
: PatchFlags.BAIL
))
- isRenderingTemplateSlot = false
+ shouldTrackInSlotRendering--
return rendered
}
import { RendererNode, RendererElement } from './renderer'
import { NULL_DYNAMIC_COMPONENT } from './helpers/resolveAssets'
import { hmrDirtyComponents } from './hmr'
-import { isRenderingTemplateSlot } from './helpers/renderSlot'
+import { shouldTrackInSlotRendering } from './helpers/renderSlot'
export const Fragment = (Symbol(__DEV__ ? 'Fragment' : undefined) as any) as {
__isFragment: true
normalizeChildren(vnode, children)
if (
- (shouldTrack > 0 || isRenderingTemplateSlot) &&
+ (shouldTrack > 0 || shouldTrackInSlotRendering > 0) &&
// avoid a block node from tracking itself
!isBlockNode &&
// has current parent block