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>

  

 

posted @ 2021-03-04 15:26  一直闭眼看世界  阅读(554)  评论(0编辑  收藏  举报