vue 组件递归调用
记得以前用react写过一个递归渲染菜单栏,当时就想过如果用vue如何实现。最近项目又用到了vue,就决定利用闲暇时间研究一下。render函数这种方法就不说了,和react的方法差不多,这里主要写一下vue组件之间的递归调用。
最后效果基本就是一个类似这种的树形结构,当然样式自己可以更改

渲染树的组件,循环父组件传过来的数据,如果有children就在递归调用自身组件name值
<template>
<ul class="tree">
<li v-for="(item,index) in treedata" :key="index">
<div class="ui-draggable ui-draggable-handle ui-droppable">
{{item.text}}
</div>
<my-tree v-if="item.children && item.children.length>0" :treedata="item.children"></my-tree>
</li>
</ul>
</template>
<script>
export default {
name: "myTree",
props:{
treedata:{
default:function(){
return []
}
}
},
}
父组件只需要传过去数据就可以了,下面的组件引入方式参考vue文档
<template>
<div>
<div class="overflow">
<div>
<linTree :treedata="treeData"></linTree>
</div>
</div>
</div>
</template>
<script>
export default {
name: "zp",
data() {
return {
treeData:[
{text:1,children:[
{text:2,children:[{text:5},{text:'55'}]},
{text:3},
{text:4},
]}
]
};
},
components: {
linTree: () => import('./components/treeContents')
},
}