首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >您注册的组件正确吗?对于递归组件,请确保提供"name“选项。

您注册的组件正确吗?对于递归组件,请确保提供"name“选项。
EN

Stack Overflow用户
提问于 2018-03-07 14:37:16
回答 27查看 284.6K关注 0票数 106

我配置了'i-tab-pane': Tabpane,但是报告错误,代码如下:

代码语言:javascript
复制
<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>

错误跟踪:

代码语言:javascript
复制
[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中尝试过全局配置:

代码语言:javascript
复制
Vue.component("Tabpane", Tabpane);

但还是不起作用。如何解决这一问题?

EN

回答 27

Stack Overflow用户

回答已采纳

发布于 2018-03-07 14:48:34

由于您为组件应用了不同的名称:

代码语言:javascript
复制
components: {
      'i-tabs' : Tabs,
      'i-tab-pane': Tabpane
    }

导出时还需要具有相同的名称:(在Tab窗格组件中检查名称)

代码语言:javascript
复制
name: 'Tabpane'

从错误中,我可以说,您还没有在组件name中定义Tabpane。确保验证name,它应该工作良好,没有错误。

票数 66
EN

Stack Overflow用户

发布于 2019-11-15 11:16:41

如果在组件中使用组件(例如,Vue DOM中的以下内容):

代码语言:javascript
复制
App
  MyComponent
   ADifferentComponent
     MyComponent

这里的问题是,MyComponent既是自身的父级,也是其子级。这将Vue抛到一个循环中,每个组件取决于另一个组件。

对此有几个解决方案:

1.全球注册MyComponent

vue.component("MyComponent", MyComponent)

2.使用beforeCreate

代码语言:javascript
复制
beforeCreate: function () {
  this.$options.components.MyComponent = require('./MyComponent.vue').default
}

3.将import移动到components对象中的lambda函数中。

代码语言:javascript
复制
components: {
  MyComponent: () => import('./MyComponent.vue')
}

--我的偏好是第三种选择, --这是最简单的调整,解决了我的情况下的问题。

更多信息:Vue.js正式文档-处理边缘案例:组件之间的循环引用

注意:如果您选择方法的2或3,在我的实例中,我必须在父组件和子组件中使用此方法来阻止这个问题的出现。

票数 106
EN

Stack Overflow用户

发布于 2019-10-30 14:41:23

浪费了将近一个小时,没有找到解决办法,所以我想贡献

在我的例子中,我错误地导入了组件。如下所示:

代码语言:javascript
复制
import { MyComponent } from './components/MyComponent'

但正确的是(没有花括号):

代码语言:javascript
复制
import MyComponent from './components/MyComponent'
票数 51
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49154490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档