假如有A,B,C几个组件,A中引入B组件,B引入了C组件,C组件引入了A组件,C组件页面渲染时会导致控制台一直报是否正确注册了A组件的错误。
组件循环嵌套引发的问题。官方文档也有说明,官方组件循环引用
官方给出的解决方法:
模块系统发现ABC的循环依赖,不知道如何不经过其中一个组件而完全解析出另一个组件。为了解决这个问题,我们需要给模块系统一个点,在那里“A 反正是需要 B 的,但是我们不需要先解析 B。”
在我们的例子中,把 组件设为了那个点。我们知道那个产生悖论的子组件是 组件,所以我们会等到生命周期钩子 beforeCreate 时去注册它:
方法一:
beforeCreate: function () {
this.$options.components.xxxx = require('./xxxx.vue').default
}
方法二:使用 webpack 的异步 import
components: {
xxxxx: () => import('./xxxx.vue')
}