为了使用动态定义的单页组件,我们使用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()
。
我们如何才能使用真正动态的组件,即在运行时导入和注册,只给出它的名称?