如何将控制API调用的嵌套三元判断条件改写为switch case语句
API调用条件判断switch case改写方案
前置说明
原代码所有触发API调用的分支都要求appName === "@common/su",且存在权限字段大小写不一致的潜在bug:部分判断写的是user?.app_permission,部分是user?.App_permission,改写时已统一为小写规范,你可以根据实际后端返回的字段名调整。同时原useEffect未声明依赖数组,改写时已补充常见依赖项,可根据业务实际需求调整。
改写后代码
useEffect(() => { // 非目标应用直接返回,无需后续判断 if (appName !== "@common/su") return; // 组合两个权限的状态为字符串,作为switch的匹配标识 const permissionKey = `${Boolean(user?.app_permission)}-${Boolean(user?.corp_permission)}`; switch (permissionKey) { // 同时拥有两个权限,调用两个接口 case "true-true": fetchAppList({ id: data.search_id, // 原逻辑中appName为@common/su时扩展为空,可按需保留或删除该段 ...(appName !== "@common/su" ? parameter : {}), }); fetchCorpList({ id: data.search_id, ...(appName !== "@common/su" ? parameter : {}), }); break; // 仅拥有应用权限,调用应用列表接口 case "true-false": fetchAppList({ id: data.search_id, ...(appName !== "@common/su" ? parameter : {}), }); break; // 仅拥有企业权限,调用企业列表接口 case "false-true": fetchCorpList({ id: data.search_id, ...(appName !== "@common/su" ? parameter : {}), }); break; // 无权限或其他异常情况不执行任何操作 default: return; } }, [user, appName, data.search_id, parameter])
内容的提问来源于stack exchange,提问作者user12302978
相关产品推荐
相关产品推荐

