Ответ
Да, во Vue компонент может содержать себя рекурсивно внутри template. Для этого нужно:
- Указать компоненту имя через
nameв опциях - Использовать это имя в шаблоне для рекурсивного вызова
Пример:
<template>
<div>
{{ item.name }}
<my-component
v-if="item.children"
v-for="child in item.children"
:item="child"
/>
</div>
</template>
<script>
export default {
name: 'MyComponent',
props: ['item']
}
</script>
Важные моменты:
- Нужно условие остановки рекурсии (в примере
v-if="item.children") - Рекурсивные компоненты полезны для древовидных структур
- Глубина рекурсии ограничена стеком вызовов браузера