根据ReactJS中的值更改axios获取url

时间:2019-11-11 20:19:55

标签: javascript reactjs axios

这是我的第一个React应用,我正在尝试使用axios来获取API。

可以根据值更改URL。

我的代码是

fetchURL(page,checked) {
  if(checked)
  {
     const apiUrl = 'firstApiURL'
  }
  else {
     const apiUrl = 'secondApiURL';
  }
   axios.get(apiUrl)......
}

它说apiUrl是未定义的。

我认为根据另一个变量来更改API网址会很容易。

我们非常感谢您的帮助。

3 个答案:

答案 0 :(得分:4)

常量的作用域仅限于声明它们的块(在分别与if([FIRApp defaultApp] == nil){ [FIRApp configure]; } {关联的}if之间)范围。

在块外定义一个变量并使用它。

else

然后您可以使用默认值代替fetchURL(page,checked) { let apiUrl; if(checked) { apiUrl = 'firstApiURL' } else { apiUrl = 'secondApiURL'; } axios.get(apiUrl)...... }

else

或者为了进一步简化而仍然使用fetchURL(page,checked) { let apiUrl = 'secondApiURL'; if(checked) { apiUrl = 'firstApiURL' } axios.get(apiUrl)...... }

const

答案 1 :(得分:3)

在您的代码中,const是在{}的块范围内定义的,因此它们在外部未定义。

使用let,以便您可以对其进行分配,并在if / else之外声明它

let apiUrl;
if (checked) {
  apiUrl = 'firstApiURL'
} else {
  apiUrl = 'secondApiURL';
}
axios.get(apiUrl)......
}

有关块语句和作用域的更多信息,请阅读https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/statements/block

答案 2 :(得分:1)

const关键字创建常量,该常量仅在创建它们的块中存在(letconst单词创建块范围变量)。

if() { }else { }是我们创建的apiUrl的块,并且“ apiUrl在它们外部不存在。

您可以在letif之外编写else变量,然后向其中写入一些值。例如:

fetchURL(page,checked) {
  let apiUrl;
  if(checked)
  {
     apiUrl = 'firstApiURL'
  }
  else {
     apiUrl = 'secondApiURL';
  }
   axios.get(apiUrl)......
}