Вы правильно зарегистрировали компонент? Для рекурсивных компонентов обязательно укажите параметр "имя"

Я настроил 'i-tab-pane': Tabpane но сообщаю об ошибке , код ниже:

<template>
  <div class="page-common">
    <i-tabs>
      <i-tab-pane label="wx">
        content
      </i-tab-pane>
    </i-tabs>
  </div>
</template>

<script>

  import {
    Tabs,
    Tabpane
  } from 'iview'

  export default{
    name:"data-center",
    data(){
      return {msg: 'hello vue'}
    },
    components: {
      'i-tabs' : Tabs,
      'i-tab-pane': Tabpane
    }
  }
</script>

Отслеживание ошибок :

[Vue warn]: Unknown custom element: <i-tab-pane> - did you register the component correctly? For recursive components, make sure to provide the "name" option.

found in

---> <DataCenter> at src/views/dc/data-center.vue
       <Index> at src/views/index.vue
         <App> at src/app.vue

Я попытался в main.js для глобальной конфигурации:

Vue.component("Tabpane", Tabpane);

но все равно не работают. Как решить эту проблему?

Ответ 1

Поскольку вы использовали другое имя для компонентов:

components: {
      'i-tabs' : Tabs,
      'i-tab-pane': Tabpane
    }

Вам также нужно иметь одно и то же имя при экспорте: (Проверить имя в компоненте Tabpane)

name: 'Tabpane'

Из ошибки я могу сказать, что вы не определили name в своем компоненте Tabpane. Обязательно проверьте name, и он должен работать нормально, без ошибок.

Ответ 2

Для рекурсивных компонентов, которые не зарегистрированы глобально, важно использовать не "любое имя", а ТОЧНО такое же имя, как у вашего компонента.

Позвольте мне привести пример:

<template>
    <li>{{tag.name}}
        <ul v-if="tag.sub_tags && tag.sub_tags.length">
            <app-tag v-for="subTag in tag.sub_tags" v-bind:tag="subTag" v-bind:key="subTag.name"></app-tag>
        </ul>
    </li>
</template>

<script>
    export default {
        name: "app-tag",  // using EXACTLY this name is essential

        components: {

        },

        props: ['tag'],
    }

Ответ 3

У меня тоже была эта ошибка. Я трижды проверил, что имена были правильными.

Однако я получил эту ошибку просто потому, что не завершал тег script.

<template>
  <div>
    <p>My Form</p>
    <PageA></PageA>        
  </div>
</template>

<script>
import PageA from "./PageA.vue"

export default {
  name: "MyForm",
  components: {
    PageA
  }
}

Обратите внимание, что в конце нет </script>.

Так что не забудьте проверить это дважды.

Ответ 4

Одна из ошибок - установка components виде массива, а не объекта!

Это не верно:

<script>
import ChildComponent from './ChildComponent.vue';
export default {
  name: 'ParentComponent',
  components: [
    ChildComponent
  ],
  props: {
    ...
  }
};
</script>

Это правильно:

<script>
import ChildComponent from './ChildComponent.vue';
export default {
  name: 'ParentComponent',
  components: {
    ChildComponent
  },
  props: {
    ...
  }
};
</script>