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')
  },
}

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM