vue 递归组件

2018-11-21  本文已影响0人  尼莫nemo

递归组件的定义

Vue.component('unique-name-of-my-component', {
  // ...
})
这时候组件名就是组件的name

无限递归死循环的组件,当出现这样的情况会报max stack size exceede 的错误
name: 'stack-overflow',
template: '<div><stack-overflow></stack-overflow></div>'

组件之间的循环引用

<tree-folder>
  <p>
    <span>{{ folder.name }}</span>
    <tree-folder-contents :children="folder.children"/>
  </p>
</tree-folder>

子组件
  <ul>
    <li v-for="child in children">
      <tree-folder v-if="child.children" :folder="child"/>
      <span v-else>{{ child.name }}</span>
    </li>
</ul>

方案一

beforeCreate: function () {
  this.$options.components.TreeFolderContents = require('./tree-folder-contents.vue').default
}

方案二
推荐使用 webpack的异步组件 通过 import 引入如下
异步组件的注册是一个箭头函数

components: {
  TreeFolderContents: () => import('./tree-folder-contents.vue')
}
上一篇下一篇

猜你喜欢

热点阅读