vue的官网递归组件的解释https://cn.vuejs.org/v2/guide/components-edge-cases.html#递归组件
但是解释的例子不是很明确,下面我补充了一个例子,可以详细的理解递归组件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<div id="app">
<tree-folder></tree-folder>
</div>
<script>
Vue.component('TreeFolderContents', {
props: ['children'],
template: `
<ul>
<li v-for="child in children">
<tree-folder v-if="child.children" :folder="child"/>
<span v-else>{{ child.name }}</span>
</li>
</ul>
`
})
Vue.component('TreeFolder', {
//name: 'tree-folder',
props: ['folder'],
template: `
<p>
<span>{{ folder.name }}</span>
<tree-folder-contents :children="folder.children"/>
</p>
`,
})
let vm = new Vue({
el: '#root',
data: {
folder: {
name: 'f1',
children: {
folder: {
name: 'f2',
children: {
folder: {
name: 'f3',
children: {
folder: {
name: 'f4'
}
}
}
}
}
}
}
}
})
</script>
</body>
</html>