You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将控制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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 18:36:10