vue只有全局注册的组件才能递归调用吗?
最近在开发 npm 组件库,需要递归使用组件,组件间存在相互依赖关系。搜索了很多答案,大部分推荐的是使用全局注册的方式解决。没有找到满意的解决答案,所以在这记录下来,如果有需要给大家参考。
递归组价时,使用局部组件注册的方式时,会报错误如下:提示你是否有正确注册该组件?如果是递归组件,请确保你提供了name 选项。我查看了我的vue组件,已经写了name 属性,但是还会提示这个错误。
did you register the component correctly? For recursive components,
make sure to provide the "name" option.
组件结构是:A 组件依赖于 B 组件, 而 B 组件又依赖于 A 组件。
于是参考异步的方式注册组件,解决了这个 报错。
// b-table 组件依赖于 block-form组件, block-form组件 依赖于 b-table组件
export default {
name: 'b-table',
components: {
'block-form': (resolve, reject) => {
require(['../block-form.vue'], resolve)
}
}
}
参考文档:https://ustbhuangyi.github.io/vue-analysis/v2/components/async-component.html
网友评论