Здесь я демонстрирую, как реализовать модульный раздел с вкладками, который отображается динамически и не позволяет разработчику вручную писать html для каждой вкладки. Это модульное решение, поскольку в нем повторно используются существующие компоненты. Шаблон будет динамически отображать компонент (из массива) в элементе зарезервированныйкомпонент› и привяжется к атрибуту: is.

В этом примере я создаю раздел с вкладками и визуализирую подкомпоненты внутри каждой вкладки. Код выполняет итерацию по массиву объектов section1Tabs из данных vue.js в ‹script› и отображает текущий tab.component из массива section1Tabs внутри зарезервированного component ›element (как описано в конце предыдущего абзаца).

Итак, в этом примере код будет отображать Subsection1.vue, а затем компонент Subsection2.vue. Как видите, вы можете постоянно добавлять в этот массив section1Tabs, и новые компоненты будут отображаться динамически.

<template>
<div>
<ui-tabs type=”text” ref=”section1Tabs”>
  <ui-tab v-for=”tab in section1Tabs :title=”tab.title”>
    <component v-bind:is=”tab.component”></component>
  </ui-tab>
</ui-tabs>
</div>
</template>
<script>
import Subsection1 from ‘@/components/Sections/Subsection1.vue’;
import Subsection2 from ‘@/components/Sections/Subsection1.vue’;
export default {
components: {
  ‘Subsection1’: Subsection1
},
data() {
  return {
    section1Tabs: [
        { title: ‘Subsection1’, component: Subsection1},
        { title: ‘Subsection2’, component: Subsection2},
    ]
  }
}
}

Ссылка: https://vuejs.org/v2/guide/components.html#Dynamic-Components