vue实现组件递归:
<div class="c-menu-tree">
<!-- show-checkbox -->
<div class="c-tree">
<template v-for="(item, index) in treeData" :key="index">
<div :class="['c-level', item.is_checked ? 'is-checked' : '']" @click.stop="handleNodeClick(item)">
<div class="level-title">
<span>{{ item.name }}</span>
</div>
<template v-if="item.children">
<CMenuTree
class="c-tree-child"
:current="current + 1"
:treeData="item.children"
/>
</template>
</div>
</template>
</div>
</div>
但是以上递归方式有一个最大的bug,is-checked是仅针对当前组件有用,所以需要搭配vuex来设置当前item的选中效果。