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控件
程序员文章站
2022-06-08 10:19:30
...
上一篇: Flexigrid折行显示问题
下一篇: Qt文件名排序