#typescript #vue.js #nuxt.js #directive
#typescript #vue.js #nuxt.js #директива
Вопрос:
Я пытаюсь отобразить компонент с помощью директивы is
<template>
<div>
<v-tabs v-model="currentTab" fixed-tabs>
<v-tab v-for="(item, i) in tabItems" :key="i">{{ item }} </v-tab>
</v-tabs>
<v-form ref="form" v-model="isValid" lazy-validation>
<v-tabs-items v-model="currentTab">
<v-tab-item v-for="(item, i) in tabItems" :key="i">
<component :is="'my-company-form-general'"></component>
<my-company-form-general />
</v-tab-item>
</v-tabs-items>
</v-form>
</div>
</template>
Это работает <my-company-form-general />
но это не
<component :is="'my-company-form-general'"></component>
Я также пробовал по имени файла
<component :is="'MyCompantFormGeneral'"></component>
Почему это не работает?
Я использую nuxt v2.14.6
Компонент вызывается MyCompanyFormGeneral.vue
и находится в той же папке
<template>
<div>
General Component
</div>
</template>
<script lang="ts">
import Vue from 'vue'
export default Vue.extend({
})
</script>
<style scoped>
</style>
Комментарии:
1. Используете ли вы
components: true
в своемnuxt.config.js
, или вы вручную импортируете свои компоненты в свой компонент?2. В моей конфигурации nuxt для компонентов установлено значение true
3. пожалуйста, не связывайте, если вам это действительно не нужно
is="my-company-form-general"
Ответ №1:
При использовании components: true
nuxt просмотрит ваши страницы и компоненты и автоматически импортирует все используемые вами компоненты.
При использовании dynamic components ( <component is="..." />
) он не знает, что импортировать, и вам придется импортировать компоненты, которые вы будете использовать с ним вручную:
import Vue from 'vue'
import MyCompantFormGeneral from '~/components/your-path/your-component-here.vue'
export default Vue.extend({
components: {
MyCompantFormGeneral
}
})
Я надеюсь, что это исправит вашу проблему.