Таким образом, чтобы достичь своей цели, мне нужно собрать ComponentLoader и дочерние компоненты, загруженные из него.
ComponentLoader.vue
<template
v-for="(block, index) in data.children">
<component
v-if="component"
:is="component"
:key="`container-${block.id}-${index}`"
:data="block"/>
</template>
</template>
Который, например, будет загружать компонент Article из его дочерних элементов:
ArticleComponent.vue
<template>
<SimpleArticle
:data="data"/>
<ComponentLoader
v-if="data.children"
:data="data"/>
</template>
Так что ArticleComponent
снова вызовет ComponentLoader
, если у него будет больше дочерних элементов для загрузки. Этот способ работает для меня и рекурсивно проходит по дереву данных.