經(jīng)歷三天從坑里爬出來之后的總結(jié)
首先要構(gòu)造一個(gè)虛擬DOM
不要構(gòu)造標(biāo)簽字符串?。?!不要自定義容器!??!
代碼貼上來以備以后參考
function datengTest(){
var dataTest = arguments[0];
function getPath(data){
return data.fullpath.substring(0,data.fullpath.length - data.name.length);
}
var size = dataTest.length;
//最頂層目錄參考值
// var temp = data.fullpath.substring(0,data.fullpath.length - data.name.length);
var path_cankao = getPath(dataTest[0]);
//存放子數(shù)組起始位置
var indexs = new Array();
var result = new Array();
var start = 0, end =0;
console.log("參考路徑:" + path_cankao);
for (var i=1; i< size;i++){
var currentPath = getPath(dataTest[i]);
if (currentPath == path_cankao){
end = i - 1;
var mymap = new Map();
mymap.start = start;
mymap.end = end;
indexs.push(mymap);
start = i;
end = i;
}
if ((i == size - 1)){
var mymap = new Map();
mymap.start = start;
mymap.end = i;
indexs.push(mymap);
}
}
if (indexs.length == 0){
var mymap = new Map();
mymap.start = start;
mymap.end = end;
indexs.push(mymap);
}
for (var i = 0; i<indexs.length; i++){
result.push(dataTest.slice(indexs[i].start,indexs[i].end + 1));
}
var commentNodes = result.map(function(data) {
var data2 = data.slice(0,data.length);
if (data.length > 1){
data2.shift();
}
console.log("data2");
console.log(data2);
if(data[0].isServiceUnit == 0 && data.length > 1) {
setAncestorKeys(data[0].id,data[0].pid);
// var currentId = data[0].id;
// var Pid = data[0].pid;
// while(map[currentId] != null){
// map[currentId].map(function(data){
// map[data[0].id].push(data);
// })
// currentId =
// }
console.log("setId")
console.log(map)
var temp = datengTest(data2);
console.log("temp")
console.log(temp)
var realElement = temp.commentNodes;
return (
<SubMenu key={data[0].id} title={<span><Icon type="setting" /><span>{data[0].name}</span></span>}>
{realElement}
</SubMenu>
);
}
else if(data[0].isServiceUnit == 1 && data.length == 1) {
return (
<Menu.Item key={data[0].id}>{data[0].name}</Menu.Item>
);
}
else if(data[0].isServiceUnit == 0 && data.length == 1){
setAncestorKeys(data[0].id,data[0].pid);
console.log("setId")
console.log(map)
return (
<SubMenu key={data[0].id} title={<span><Icon type="setting" /><span>{data[0].name}</span></span>}>
</SubMenu>
);
}
});
console.log("commentNodes")
console.log(commentNodes)
return (
{commentNodes}
);
}
然后再去渲染就行了,根據(jù)json不同的結(jié)構(gòu)選擇不同的遞歸算法