reactjs 是否可以在Axios(React.js)中使用“如果”?

vs3odd8k  于 2023-01-08  发布在  React
关注(0)|答案(3)|浏览(161)

我想使用if在Axios中更改URL。但是看起来有问题。
是否可以在Axios(React.js)中使用"如果"?
我可以看到console. log(building_state);在控制台中。
错误是

SyntaxError: /Users/xxx/Desktop/webapp/src/components/Setting.js: Unexpected token

Setting.js

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

  console.log(building_state);
  
  
  const getRoomName = async(data) => {
    
    await axios.get(
      if (building_state == "condo") {'xxx.com',},
      elif (building_state == "office") {'xxx2.com',},
      else (building_state == "house") {'xxx3.com',},
      {
        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);
      });
  }
bn31dyow

bn31dyow1#

...

const url = {
 "condo": "xxx.com",
 "office": "xxx2.com",
 "house": "xxx3.com"
}[building_state]

await axios.get(
 url,
 {
    headers: {

...

你不能在axios调用中使用If操作符,但是你可以在axios调用之前声明一个变量,然后随意修改它,上面的const url只是另一种简洁的写条件的方法。

tyg4sfes

tyg4sfes2#

是的,但是你的语法错了。
与您正在执行的操作的1:1等效:

const url = building_state == "condo"
    ? 'xxx.com'
    : building_state == "office"
        ? 'xxx2.com'
        : 'xxx3.com'

或者,使用switch case语法

aiazj4mn

aiazj4mn3#

您可以像这样使用Switch。

这个密码应该能达到你的目的。

const getRoomName = async(data) => {

    let api_request = '';


   switch (building_state) {

  case "condo":
    api_request = "xxx.com";
    break;
  case "office":
     api_request = "xxx1.com";
    break;
  case "house":
     api_request = "xxx2.com";
    break;
  default:
    console.log("Something went wrong...");
    return;
}
    
    await axios.get(api_request),
      {
        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);
      });
  }

相关问题