1.优化递归
描述问题
接口返回数据后,需要给每条数据添加extend=true,并渲染到iview-tree上,此时需要递归处理数据
解决方法(1)
res--->接口返回的数据:
res.map(it => {
it.expand = true;
it && it.children ? this.getIsLeaf(it) : "";
});
this.treeData = res;
//递归循环设置
getIsLeaf(obj) {
let arr = obj.children || [];
for (let i in arr) {
let item = arr[i];
if (item && item.children) {
item.expand = true;
this.getIsLeaf(item);
}
}
}
方法(2)
function transTree(data) {
data.forEach(item => {
item.expand = true;
if (item.children && item.children.length) {
transTree(item.children);
}
});
}
const res = await this.MANAGE_BASE_APPS(); //接口返回的数据
if (!Array.isArray(res)) {
let msg = res || "获取域权限失败!";
this.$Message.error(msg);
return;
}
transTree(res); //递归调用
this.treeData = res
2.优化处理接口数据
描述问题
接口返回数据后,由于已经是new Promise,则无需再返回new Promise
old方法
domainBaseApps() {
return new Promise((resolve, reject) => {
this.MANAGE_BASE_APPS()
.then(res => {
//接受接口返回的数据
this.treeData = res;
resolve(true);
})
.catch(err => {
let msg = err || "获取域权限失败!";
this.$Message.error(msg);
});
});
}
优化方法
async domainBaseApps() {
function transTree(data) {
data.forEach(item => {
item.expand = true;
if (item.children && item.children.length) {
transTree(item.children);
}
});
}
const res = await this.MANAGE_BASE_APPS();
if (!Array.isArray(res)) {
let msg = res || "获取域权限失败!";
this.$Message.error(msg);
return;
}
transTree(res);
this.treeData = res;
}
async domainBaseApps() {
const res = await this.MANAGE_BASE_APPS();
if (!Array.isArray(res)) {
let msg = res || "获取域权限失败!";
this.$Message.error(msg);
return;
}
this.treeData = res;
}
4.总结:
做项目时,还是要多思考如何写代码,方法有多种,但要学会找到合适的方法,每天进步一点点,提高编码能力,加油吧,小菜鸟~~,end~~~