欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【ReactJS】自制TreeView控件

程序员文章站 2022-06-08 10:19:30
...
var Tree = React.createClass({
    getDefaultProps: function() {
        return {
            nodes:[
            {id:1,pid:0,text:"*节点"},
            {id:2,pid:1,text:"一级节点1"},
            {id:4,pid:2,text:"1节点下的1"},
            {id:5,pid:2,text:"1节点下的2"},
            {id:6,pid:3,text:"2*节点1"},
            {id:3,pid:1,text:"一级节点2"},
            ]//空
        };
    },
    /**
     * 加载树
     * @param pid 父节点id 
     */
    loadTree:function(pid,level){
        //预先保存
        var children = new Array();
        //别名 nodes
        var nodes = this.props.nodes;
        var index = -1;
        //console.log(nodes);
        //递归添加孩子
        for (var i = 0; i < nodes.length ; i++) {
            //寻找本节点的索引
            if(nodes[i].id==pid)
            {
                index=i;
            }
            //加载孩子
            if(nodes[i].pid==pid)
            {
                children.push(this.loadTree(nodes[i].id,level+1));
            }
        }

        var levelBlank="";
        for (level--; level>= 0; level--) {
            levelBlank+="-";
        }

        
        var thisContent = "";
        if(index>=0)
        {
            thisContent=nodes[index].text;
        }
        var _self=<div id={"parent"+pid}>
            {levelBlank}
            {thisContent}
            {children.length>0? children:""}
            </div>;
        
       
        return _self;

    },
    render: function() {
        return (
            <div id="reactTree">{this.loadTree(1,0)}</div>
        );
    }
});


ReactDOM.render(
    <Tree />,
    document.getElementById('example'));


【ReactJS】自制TreeView控件