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

使用React Hooks与Axios按语言条件调用API的实现问题

基于Axios + React Hooks的条件API调用实现方案

现有代码的核心问题

  • 条件判断语法错误:language === 'ru' || 'en' 的写法逻辑不成立,JS会将'en'这类非空字符串判定为布尔真值,导致第一个判断分支永远触发,第二个分支永远无法执行
  • 第二套逻辑的触发条件遗漏了需求指定的ar语言
  • 第一套请求逻辑缺少错误捕获,请求异常时无法处理
  • 并行请求的写法可以简化,代码冗余度可降低

修正后可运行的代码

// 提前定义语言分组,后续维护时直接修改数组即可
const FIRST_GROUP_LANGS = ['ru', 'en', 'fr', 'de', 'tr', 'it', 'es']
const SECOND_GROUP_LANGS = ['zh', 'ko', 'ar']

const reqTranslate = () => {
  // 用数组includes简化判断逻辑
  if (FIRST_GROUP_LANGS.includes(language)) {
    Promise.all([requestTranslate, requestDictionary])
      .then(([translateRes, dictionaryRes]) => {
        // 直接解构得到两个请求的返回值,无需使用axios.spread
        const responseOne = translateRes?.data?.text?.[0];
        const responseTwo = dictionaryRes?.data?.def?.[0]?.tr;
        const responseThree = dictionaryRes?.data?.def?.[0]?.pos;
        const responseFour = dictionaryRes?.data?.def?.[0]?.ts;
        const responseFive = dictionaryRes?.data?.def?.[0]?.text;
        const responseSix = dictionaryRes?.data?.def?.[0]?.tr;

        console.log(responseOne, responseTwo);
        setTextresult(responseOne);
        setSynTransLang(responseTwo);
        setPos(responseThree);
        setTs(responseFour);
        setTxt(responseFive);
        setMapValue(responseSix);
      })
      .catch(errors => {
        console.error('请求异常:', errors);
      })
  } else if (SECOND_GROUP_LANGS.includes(language)) {
    Promise.all([requestTranslate, requestDictionary])
      .then(([translateRes]) => {
        const responseOne = translateRes?.data?.text?.[0];
        console.log(responseOne);
        setTextresult(responseOne);
      })
      .catch(errors => {
        console.error('请求异常:', errors);
      })
  }
}

优化说明

  • 用数组存储语言分组,后续调整支持的语言时只需要修改数组内容,不需要修改判断逻辑,可维护性更高
  • 用原生Promise.all + 数组解构代替axios.all + axios.spread,语法更通用,可读性更强
  • 两个分支都补充了错误捕获逻辑,避免异常无提示
  • 修复了判断逻辑错误和语言缺失的问题

内容的提问来源于stack exchange,提问作者Jamal Fakhriddinov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 00:54:04