Реактивность слотов

Для реактивной работы слотов с v-if или подобным из setup/options api, необходимо вешать v-if на содержимое слота, всегда отображая сам слот

Проверять наличие слота изнутри самого компонента, необходимо через slotHasContent, который проверяет содержимое слота, вместо простой проверки !!slots.foo?.()

При этом $slots внутри шаблона реактивен

Проверка наличия слота из render функции так же оставляет реактивность

Реактивно

// Условие в SomeComponent через setup/options
<template>
  <SomeComponent>
    <template #foo>
      <div v-if="bar" />
    </template>
  </SomeComponent>
</template>

// Условие в SomeComponent через $slots в шаблоне или рендер-функцию
<template>
  <SomeComponent>
    <template
      v-if="bar"
      #foo
    >
      <div />
    </template>
  </SomeComponent>
</template>

Не реактивно

// Условие в SomeComponent через setup/options
<template>
  <SomeComponent>
    <template
      v-if="bar"
      #foo
    >
      <div />
    </template>
  </SomeComponent>
</template>

// Условие в SomeComponent через $slots в шаблоне или рендер-функцию
<template>
  <SomeComponent>
    <template #foo>
      <div v-if="bar" />
    </template>
  </SomeComponent>
</template>