Чтобы использовать динамически определенный одностраничный компонент, мы используем тег component
, таким образом:
<component v-bind:is="componentName" :prop="someProperty"/>
...
import DynamicComponent from '@/components/DynamicComponent.vue';
...
components: {
DynamicComponent
},
props: {
componentName: String,
someProperty: null,
}
Проблема в том, что на самом деле это не очень динамично, поскольку каждыйкомпонент, который мы когда-либо могли бы захотеть использовать, должен быть не только импортирован статически, но и зарегистрирован в components
.
Мы попытались сделать это, чтобы хотя бы избежать необходимости импортировать все:
created() {
import(`@/components/${this.componentName}.vue`);
},
но, конечно, это не помогает, так как кажется, что DynamicComponent
должен быть определен до достижения created()
.
Как мы можем использовать действительно динамический компонент, то есть импортированный и зарегистрированныйво время выполнения, дается только его имя?