Vue.component 全局注册组件时,组件循环引用可以解开。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.js"></script>
</head>
<body>
<div id="div">
<!--用prop 获取实例data数据-->
<father-comp :kkk="folder"></father-comp>
</div>
<script>
Vue.component("child-comp", {
template: `
<p>
<span>{{aaa.name}}</span>
<father-comp :kkk="aaa.ch"/>
</p>`,
props: ['aaa']
})
Vue.component("father-comp", {
template: `
<ul>
<li v-for="child in kkk">
<child-comp v-if="child.ch" :aaa="child"></child-comp>
<span v-else>{{child.name}}</span>
</li>
</ul>
`,
props: ['kkk']
})
new Vue({
el: "#div",
data: {
folder: [{
name: 1
}, {
name: 2,
ch: [{
name: "2-1",
ch: [{
name: "2-1-1"
}, {
name: "2-1-2"
}]
}]
}]
}
})
</script>
</body>
</html>
当组件不是全局注册的时候 我们使用递归组件需要经过处理才使用
解决方案如下
方案一
beforeCreate: function () {
this.$options.components.TreeFolderContents = require('./tree-folder-contents.vue').default
}
方案二
推荐使用 webpack的异步组件 通过 import 引入如下
异步组件的注册是一个箭头函数
components: {
TreeFolderContents: () => import('./tree-folder-contents.vue')
}
网友评论