前端 2019-02-15 14:47:44

问题

vue组件循环引用,出现组件未注册问题

a组件引用b

b组件中也引用a

如FileTree引用FileTreeItem,递归过程中FileTreeItem引用FileTree,导致出现组件未注册的错误。

解决

vue官方给出的解决方法,异步加载B组件

  • beforeCreate 时去注册它:
    beforeCreate: function () {
      this.$options.components.TreeFolderContents = require('./tree-folder-contents.vue').default
    }
    
  • webpack 的异步 import
    components: {
      TreeFolderContents: () => import('./tree-folder-contents.vue')
    }
    

参考

https://cn.vuejs.org/v2/guide/components-edge-cases.html#%E9%80%92%E5%BD%92%E7%BB%84%E4%BB%B6