javascript - Vue组件循环自身:无法挂载组件:未定义模板或渲染函数
问题描述
似乎无法弄清楚这一点。我有一个主包装组件,它使用另一个组件来呈现导航结构。
导航可以是多层次的,因此需要动态生成。
包装器看起来像这样:
<template>
<nav v-if="this.navigation.length">
<link-role :collection="navigation"></link-role>
</nav>
</template>
<script>
import LinkRole from './Formats/LinkRole';
export default {
components: {
'link-role': LinkRole,
},
props: {
navigation: {
type: Object,
default: () => { return {} }
}
}
}
</script>
和LinkRole
这样的组件:
<template>
<ul>
<li v-for="(item, index) in collection" :key="index">
<a v-if="item.url" :href="item.url" v-text="item.name"></a>
<span v-else v-text="item.name"></span>
<link-role v-if="item.items" :collection="item.items"></link-role>
</li>
</ul>
</template>
<script>
import LinkRole from './LinkRole';
export default {
components: {
'link-role': LinkRole,
},
props: {
collection: {
type: [Object, Array],
default: () => []
}
},
}
</script>
正如您在其中看到的,LinkRole
我正在循环遍历集合中的项目,LinkRole
如果存在另一个级别的items
.
通过这种方法,我得到
[Vue 警告]:无法挂载组件:未定义模板或渲染函数。
但无法弄清楚是什么原因造成的。
解决方案
根据文档,您需要name
在组件中提供一个选项才能递归使用它。
组件可以在自己的模板中递归地调用自己。但是,他们只能使用name选项这样做
import LinkRole from './LinkRole';
export default {
name: 'link-role',
components: {
'link-role': LinkRole,
},
props: {
collection: {
type: [Object, Array],
default: () => []
}
},
}
推荐阅读
- postman - 如何在邮递员代码片段中获取基于 linux 的代码而不是基于 Windows 的代码
- firewall - 文件上传限制为 1M,即使在 PHP、Nginx 和 Apache 配置之后
- javascript - 创建以图像为属性的 javascript 对象
- c# - 防止运行单个应用程序的多个实例
- javascript - 如何检测我的代码是否作为 Webpack 包执行
- kubernetes - Kubectl get events 说没有资源
- java - 安装 ireport 插件时,它显示消息为“某些插件需要安装插件 org.jdesktop.layout”
- java - 跟踪 Java-Web-Start 应用程序和 Web 之间的所有通信
- node.js - 如何将架构添加到另一个架构数组?
- javascript - 通过 AJAX 函数加载 php