Может ли во Vue компонент содержать себя рекурсивно внутри template

«Может ли во Vue компонент содержать себя рекурсивно внутри template» — вопрос из категории Vue, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, во Vue компонент может содержать себя рекурсивно внутри template. Для этого нужно:

  1. Указать компоненту имя через name в опциях
  2. Использовать это имя в шаблоне для рекурсивного вызова

Пример:

<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")
  • Рекурсивные компоненты полезны для древовидных структур
  • Глубина рекурсии ограничена стеком вызовов браузера