loops - 无法在 Loop 中定义 Vue 单文件组件 (CLI),例如 app->A->B->A->B
问题描述
我试图在循环中定义组件,即组件在循环中相互引用。
结构是这样的:
app(root) -> A -> B -> A -> B....,
但是,我收到错误消息:
[Vue 警告]:无法挂载组件:未定义模板或渲染函数。
应用程序.vue:
<template>
<ComponentA></ComponentA>
</template>
<script>
import ComponentA from "./ComponentA.vue";
export default {
name: "app",
components: {
ComponentA
}
};
</script>
组件A.vue:
<template>
<div>
ComponentA
<ComponentB></ComponentB>
</div>
</template>
<script>
import ComponentB from "./ComponentB.vue";
export default {
name: "ComponentA",
components: {
ComponentB
}
};
</script>
CompoentB.vue:
<template>
<div>
ComponentB
<ComponentA></ComponentA>
</div>
</template>
<script>
import ComponentA from "./ComponentA.vue";
export default {
name: "ComponentB",
beforeCreate() {
this.$options.components.ComponentA = require("./ComponentA");
},
components: { ComponentA }
};
</script>
问题:
我在我的应用程序中需要这个结构,如何使这个定义起作用?
笔记:
- 我正在使用 CLI,即单个 vue 文件组件,似乎 webpack 支持这一点,因为如果我使用 vue.js 作为插件,它可以工作,但不在 cli 环境中。
我也在componentB中尝试过这个,但没有工作:
beforeCreate() { this.$options.components.ComponentA = require("./ComponentA"); }
递归组件正在工作,即组件在定义中引用自身,但在循环中相互引用的组件不起作用。
解决方案
我自己已经弄清楚了: https ://vuejs.org/v2/guide/components-edge-cases.html#Recursive-Components
它应该是:
beforeCreate() {
this.$options.components.ComponentA = require("./ComponentA").default;
},
推荐阅读
- python - python的内置排序是否并行化?
- c++ - C++ 向量和 cin
- redis - 我们可以使用 Redis 集群可靠地扩展 URL 更短的服务吗?(即我们需要 Zookeeper 吗?)
- python - TesseractNotFoundError: ** tesseract 可执行文件的路径** ArchLinux(ManjoraLinux)
- r - 基于条件创建累积每周平均值的 Date.table 解决方案
- python - 如何使用 Pandas 模块“按名称”查找特定的 Excel 行
- javascript - 当前主题在本地存储时,如何在浅色和深色主题之间切换?
- c++ - 有没有比控件 ID 到功能映射更好的方法来处理按钮行为?
- php - 仅在通过 Apache2 连接时远程 MySqli 连接超时
- mysql - 在 laravel 中保存下拉列表值