我配置'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>
Run Code Online (Sandbox Code Playgroud)
错误追溯:
[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
Run Code Online (Sandbox Code Playgroud)
我尝试过main.js进行全局配置:
Vue.component("Tabpane", Tabpane);
Run Code Online (Sandbox Code Playgroud)
但仍然无法正常工作.如何解决这个问题?
fre*_*ett 62
对于那些正在寻找答案而其他人没有工作的人,这可能:
如果你在一个组件中使用一个组件(例如在 Vue DOM 中这样的东西):
App
MyComponent
ADifferentComponent
MyComponent
Run Code Online (Sandbox Code Playgroud)
这里的问题是它MyComponent本身既是父母又是孩子。这会将 Vue 放入一个循环中,每个组件都依赖于另一个。
有几个解决方案:
MyComponentvue.component("MyComponent", MyComponent)
beforeCreatebeforeCreate: function () {
this.$options.components.MyComponent = require('./MyComponent.vue').default
}
Run Code Online (Sandbox Code Playgroud)
import到components对象内的 lambda 函数中components: {
MyComponent: () => import('./MyComponent.vue')
}
Run Code Online (Sandbox Code Playgroud)
我的偏好是第三个选项,这是最简单的调整并解决了我的问题。
更多信息:Vue.js 官方文档 — 处理边缘情况:组件之间的循环引用
注意:如果您选择方法的 2 或 3,在我的实例中,我必须在父组件和子组件中使用此方法来阻止出现此问题。
Mar*_*uda 42
浪费了将近一个小时,没有找到解决办法,所以想贡献一下=)
就我而言,我错误地导入了组件……如下所示:
import { MyComponent } from './components/MyComponent'
Run Code Online (Sandbox Code Playgroud)
但正确的是(没有花括号):
import MyComponent from './components/MyComponent'
Run Code Online (Sandbox Code Playgroud)
Bho*_*yar 26
由于您为组件应用了不同的名称:
components: {
'i-tabs' : Tabs,
'i-tab-pane': Tabpane
}
Run Code Online (Sandbox Code Playgroud)
导出时还需要具有相同的名称:(检查Tabpane组件中的名称)
name: 'Tabpane'
Run Code Online (Sandbox Code Playgroud)
从错误中,我可以说你没有name在你的组件中定义Tabpane.确保验证它name,它应该正常工作,没有错误.
AMT*_*rky 11
错误之一是设置components为数组而不是对象!
这是错误的:
<script>
import ChildComponent from './ChildComponent.vue';
export default {
name: 'ParentComponent',
components: [
ChildComponent
],
props: {
...
}
};
</script>
Run Code Online (Sandbox Code Playgroud)
这是正确的:
<script>
import ChildComponent from './ChildComponent.vue';
export default {
name: 'ParentComponent',
components: {
ChildComponent
},
props: {
...
}
};
</script>
Run Code Online (Sandbox Code Playgroud)
注意:对于使用其他(“子”)组件的组件,您还必须指定一个components字段!
对于未全局注册的递归组件,必须不要使用“任何名称”,而应使用与组件完全相同的名称。
让我举个例子:
<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'],
}
Run Code Online (Sandbox Code Playgroud)
我也有这个错误。我三次检查名字是否正确。
但是,我收到此错误只是因为我没有终止脚本标记。
<template>
<div>
<p>My Form</p>
<PageA></PageA>
</div>
</template>
<script>
import PageA from "./PageA.vue"
export default {
name: "MyForm",
components: {
PageA
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,末尾没有</script> 。
所以一定要仔细检查这一点。
| 归档时间: |
|
| 查看次数: |
76163 次 |
| 最近记录: |