У меня есть следующий родительский компонент, который должен отображать список динамических дочерних компонентов:
<template>
<div>
<div v-for="(componentName, index) in supportedComponents" :key="index">
<component v-bind:is="componentName"></component>
</div>
</div>
</template>
<script>
const Component1 = () => import("/components/Component1.vue");
const Component2 = () => import("/components/Component2.vue");
export default {
name: "parentComponent",
components: {
Component1,
Component2
},
props: {
supportedComponents: {
type: Array,
required: true
}
}
};
</script>
Свойство supportedComponents
представляет собой список имен компонентов, которые я хочу отобразить в родительском компоненте.
Чтобы использовать дочерние компоненты в родительском компоненте, я должен импортировать их и зарегистрировать их.
Но единственный способ сделать это - жестко закодировать пути импорта компонентов:
const Component1 = () => import("/components/Component1.vue");
const Component2 = () => import("/components/Component2.vue");
А затем зарегистрируйте их следующим образом:
components: {
Component1,
Component2
}
Я хочу сделать мой parentComponent
как можно более универсальным.Это означает, что я должен найти способ избежать жестко закодированных путей компонентов в операторах импорта и регистрации.Я хочу добавить в parentComponent
какие дочерние компоненты он должен импортировать и визуализировать.
Возможно ли это в Vue?Если да, то как?