我配置了'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);但还是不起作用。如何解决这一问题?
发布于 2018-03-07 14:48:34
由于您为组件应用了不同的名称:
components: {
'i-tabs' : Tabs,
'i-tab-pane': Tabpane
}导出时还需要具有相同的名称:(在Tab窗格组件中检查名称)
name: 'Tabpane'从错误中,我可以说,您还没有在组件name中定义Tabpane。确保验证name,它应该工作良好,没有错误。
发布于 2019-11-15 11:16:41
如果在组件中使用组件(例如,Vue DOM中的以下内容):
App
MyComponent
ADifferentComponent
MyComponent这里的问题是,MyComponent既是自身的父级,也是其子级。这将Vue抛到一个循环中,每个组件取决于另一个组件。
对此有几个解决方案:
1.全球注册MyComponent
vue.component("MyComponent", MyComponent)
2.使用beforeCreate
beforeCreate: function () {
this.$options.components.MyComponent = require('./MyComponent.vue').default
}3.将import移动到components对象中的lambda函数中。
components: {
MyComponent: () => import('./MyComponent.vue')
}--我的偏好是第三种选择, --这是最简单的调整,解决了我的情况下的问题。
更多信息:Vue.js正式文档-处理边缘案例:组件之间的循环引用
注意:如果您选择方法的2或3,在我的实例中,我必须在父组件和子组件中使用此方法来阻止这个问题的出现。
发布于 2019-10-30 14:41:23
浪费了将近一个小时,没有找到解决办法,所以我想贡献
在我的例子中,我错误地导入了组件。如下所示:
import { MyComponent } from './components/MyComponent'但正确的是(没有花括号):
import MyComponent from './components/MyComponent'https://stackoverflow.com/questions/49154490
复制相似问题