你可以对这段代码进行优化,主要集中在减少嵌套、提高可读性和避免不必要的深拷贝。以下是经过优化后的代码:
console.log('params', params);
setLoading(true); // 在请求开始时设置 loading 状态
getCustomServiceList(params)
.then((res) => {
if (res?.code === 0) {
const initDataOriginCopy = JSON.parse(JSON.stringify(res.data));
// 初始化 num:0
initDataOriginCopy?.serviceDetailList?.forEach(serviceDetail => {
serviceDetail.serviceList.forEach(service => {
service.num = 0;
});
});
setInitData(initDataOriginCopy);
setHasRes(true);
}
})
.catch((error) => {
console.error('Error occurred:', error);
})
.finally(() => {
setLoading(false); // 确保 loading 状态在请求完成后被重置
});
优化点说明:
- 简化嵌套:将
map
改为forEach
,因为我们并不需要返回一个新的数组,只是想遍历并修改现有对象。 - 提前设置 Loading 状态:确保在发起请求前就设置 loading 状态,避免可能的 UI 闪烁。
- 使用严格相等(===):建议使用严格相等操作符,以避免类型转换带来的潜在问题。
- 错误日志更清晰:改变了错误日志的格式,使其更加清晰易懂。
这样的结构会让你的代码更加简洁,逻辑也更加清晰。
内容由零声教学AI助手提供,问题来源于学员提问