javascript - 使用 VueJS 递归嵌套组件
问题描述
我正在尝试建立一个父子层次结构,这里是相关的组件定义——我已经将它们简化为只显示层次结构的结构。
根组件.vue
<template>
<ComponentA></ComponentA>
</template>
组件A.vue
<template>
<!--...-->
<ComponentB></ComponentB>
</template>
组件B.vue
<template>
<!--Some standard html tags-->
<ComponentA></ComponentA>
<!--...-->
<ComponentC></ComponentC>
</template>
组件C.vue
<template>
<!--Some standard HTML tags-->
<ComponentD></ComponentD>
</template>
问题是ComponentA
insideComponentB
没有渲染,并且控制台中显示以下错误消息:
未知的自定义元素: - 您是否正确注册了组件?对于递归组件,请确保提供“名称”选项。
正确渲染的顶级实例只是嵌套的ComponentA
下一层不渲染。ComponentB
ComponentA
所有组件都是使用该Vue.extend()
方法创建的,并name
在它们上定义了一个属性。组件由components:
属性导入
ComponentA 进口ComponentB
ComponentB 导入ComponentA
和ComponentC
编辑
组件 A 导入
import ComponentB from "./ComponentB.vue"
export default Vue.extend({
name: "ComponentA",
//...
components: {
ComponentB
}
})
组件 B 导入
import ComponentA from "./ComponentA.vue"
import ComponentC from "./ComponentC.vue"
export default Vue.extend({
name: "ComponentB",
//...
components: {
ComponentA,
ComponentC
}
})
呈现的预期 HTML 结构
<ComponentA>
<ComponentB>
<ComponentA>
<ComponentB>
<ComponentC></ComponentC>
</ComponentB>
</ComponentA>
<ComponentC></ComponentC>
</ComponentB>
</ComponentA>
呈现的实际 HTML 结构
<ComponentA>
<ComponentB>
<!--ComponentA is missing here-->
<ComponentC></ComponentC>
</ComponentB>
</ComponentA>
我花了几个小时在网上搜索解决方案,但找不到任何解决问题的方法。非常感谢任何指针。
解决方案
推荐阅读
- php - 如何以雄辩的关系与laravel进行求和
- opencv - 较小的 mp4 文件持续时间
- c - 将元素添加到字符串数组
- delphi - Delphi Inline 更改对位读取的回答
- javascript - App.js 中未在 react-native 中呈现的组件。请纠正我。
- node.js - 尝试使用节点 js 在 ElasticSearch 上创建新索引,我得到了。无法解析值 [5] 以设置 [index.number_of_shards] 必须 <= 3
- javascript - getElementsByClassName 返回“未定义”
- mysql - ERROR 3098 (HY000): 该表不符合外部插件的要求
- python - Python Swagger 麻烦
- automated-tests - Azure DevOps 项目与 Visual Studio 项目(在一个解决方案中)