То, чего я хочу добиться, - это объединить "асинхронные компоненты" vuejs и его "динамические компоненты" (https://vuejs.org/v2/guide/components-dynamic-async.html)), чтобы получить гибкий способ использования динамических компонентов.
Допустим, у меня есть следующий компонент:
<template>
<div>
some stuff..
<component :is="type"></component>
some stuff...
</div>
</template>
<script>
export default {
name: "mycomponent",
props: {
type: {}
}
}
</script>
Я бы использовал это так:
<mycomponent type="myinput"></mycomponent>
Чтобы это работало, мне нужно загрузить myinput
компонент в mycomponent
, и я сделаю это aync:
components: {
MyInput: () => import("./myinput")
}
Это работает!
Проблема в том, что я хочу сделать его динамичным и использовать его так:
<mycomponent type="myinput"></mycomponent>
<mycomponent type="myselect"></mycomponent>
<mycomponent type="mytextarea"></mycomponent>
...
Чтобы запустить его, мне нужно импортировать все эти компоненты в mycomponent
, что, очевидно, не очень хорошая идея. Глобальный импорт - это тоже не путь.
Это был всего лишь пример, но реальным вариантом использования этого является получение массива type
из API и динамическое отображение формы с ним.