Не уверен, что это лучший способ, но вы можете проверить $options.components
, чтобы увидеть, какие компоненты зарегистрированы.
В приведенном ниже примере есть 3 дочерних компонента. Один из них зарегистрирован в мире, один зарегистрирован на местном уровне, а третий вообще не зарегистрирован. Этот третий компонент не будет отображен.
Vue.component('comp-a', { template: `<div>a</div>` })
new Vue({
el: '#app',
components: {
'comp-b': {
template: `<div>b</div>`
}
}
})
<script src="https://unpkg.com/vue@2.6.11/dist/vue.js"></script>
<div id="app">
<comp-a v-if="$options.components['comp-a']"></comp-a>
<comp-b v-if="$options.components['comp-b']"></comp-b>
<comp-c v-if="$options.components['comp-c']"></comp-c>
</div>
Здесь может быть осложнение, например, дело с шашлыком против PascalCase, но я сомневаюсь, что это станет непреодолимым препятствием для того, чтобы заставить это работать.