ant vue tree 递归jsx 组件开发
本来想自定义组件的发现 只支持ant 自己直接子集的组件

<a-tree
class="u-ant-tree"
default-expand-all
show-icon
>
<template v-for="t in treeData" >
<treeNodeCustom :t="t" :key="t.key" ></treeNodeCustom>
</template>
</a-tree>
<template>
<a-tree-node :key="t.key">
<a-icon slot="icon" type="smile-o" />
<span slot="title">{{t.key}}</span>
<tempalte v-if="t.children&&t.children.length>0">
<treeNodeCustom v-for="item in t.children" :t="item" :key="item.key" > </treeNodeCustom>
</tempalte>
</a-tree-node>
</template>
<script>
export default {
name:'treeNodeCustom',
props:{
t:{
}
},
data() {
return {
}
},
}
</script>
<style lang="less" scoped>
</style>
所以直接使用vue jsx 来实现
<script>
export default {
props: {
treeData: {
default() {
return [
{
title: 'parent 1',
key: '0-0',
all: 1111,
children: [
{ title: 'leaf', all: 1111, key: '0-0-0', },
{ title: 'leaf', all: 1113, key: '0-0-1',}
]
}
];
}
}
},
methods: {
},
render() {
function DeepDom(list) {
let arr = [];
if (list.length > 0) {
arr = list.map(t => {
return (
<a-tree-node key={t.key}>
<a-icon slot="icon" type="smile-o" />
<span slot="title">{t.title}</span>
{t.children && DeepDom(t.children)}
</a-tree-node>
);
});
}
return arr;
}
let {treeData} = this;
return (
<a-tree class="u-ant-tree" className="u-ant-tree" default-expand-all show-icon>
{DeepDom(treeData)}
</a-tree>
);
}
};
</script>



浙公网安备 33010602011771号