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

React中能否在Axios内使用If语句动态切换请求URL?

问题原因及解决办法

你不能直接在axios.get()的参数位置写if/else if语句块,这不符合JavaScript语法规则,所以才会报Unexpected token错误。另外注意JavaScript里没有elif,正确写法是else if。

下面给你两种可行的写法:

写法一:先通过if-else确定URL再请求

const building_state = useSelector(state => state.building_state.building_state);

console.log(building_state);

const getRoomName = async(data) => {
  let url;
  if (building_state === "condo") {
    url = 'xxx.com';
  } else if (building_state === "office") {
    url = 'xxx2.com';
  } else if (building_state === "house") {
    url = 'xxx3.com';
  }

  try {
    const result = await axios.get(url, {
      headers: {
        'Content-Type': 'application/json',
        'Authorization': `Bearer ${cookies.get('accesstoken')}`
      },
    });
    console.log(result.data);
    setRoomName(result.data.home_rooms);
  } catch (err) {
    console.log(err);
  }
}

这里用try/catch搭配async/await比.then/.catch更简洁,你也可以保留原有的.then写法,只要把确定好的url变量传进去即可。

写法二:用三元表达式(适合分支较少的场景)

const building_state = useSelector(state => state.building_state.building_state);

console.log(building_state);

const getRoomName = async(data) => {
  const url = building_state === "condo" 
    ? 'xxx.com' 
    : building_state === "office" 
      ? 'xxx2.com' 
      : 'xxx3.com'; // 可根据需求调整默认值

  await axios.get(url, {
    headers: {
      'Content-Type': 'application/json',
      'Authorization': `Bearer ${cookies.get('accesstoken')}`
    },
  })
  .then(result => {
    console.log(result.data)
    setRoomName(result.data.home_rooms);  
  })
  .catch(err => {
    console.log(err);
  });
}

总结:React+Axios里当然可以用if语句,但不能直接写在函数参数的括号内,得先把URL确定好再传给axios请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 01:15:50