Reactjs 在reactnative中每个textinput获取多次

Reactjs 在reactnative中每个textinput获取多次,reactjs,react-native,fetch,fetch-api,Reactjs,React Native,Fetch,Fetch Api,因此,基本上,我正在react native中构建一个天气应用程序,并将weatherAPI用于天气API。我的问题是:假设我搜索了纽约的天气,它给了我80华氏度,我搜索了达拉斯的天气,但它给了我与纽约天气相同的细节 我知道我的API被调用了一次,但如何根据textinput的更改多次调用API? 代码如下: constructor(props) { super(props); this.state = { weatherText: "Enter", isLoadin

因此,基本上,我正在react native中构建一个天气应用程序,并将weatherAPI用于天气API。我的问题是:假设我搜索了纽约的天气,它给了我80华氏度,我搜索了达拉斯的天气,但它给了我与纽约天气相同的细节

我知道我的API被调用了一次,但如何根据textinput的更改多次调用API? 代码如下:

constructor(props) {
super(props);
this.state = {
  weatherText: "Enter",
  isLoading: true,
  locationData: [],
  currentData: []
};
}

注意:我故意拿出API的密钥

那么我怎样才能做到这一点呢。正如我之前所说的,当Textinput发生变化时,如何调用API?
我是想使用
ComponentDidMount
还是有其他内置函数/方法来实现这一点?

不要在
ComponentDidMount
上调用api,而是在文本输入更改时或在文本输入旁边的提交按钮上调用它。
假设您有
文本输入
,使用

<TextInput placeholder="eg. New York" onChange={(val)=>this.apiCALL(val)}/>

现在,此函数可重复使用,可用于所有城市。

您可以在组件内部调用它。通过比较状态值,甚至在文本输入中调用它。onTextChange仍然会为每次更改调用它。这可能是一个愚蠢的问题:onChangeText和onChangeyes之间有什么区别。改用onChangeText。这是正确的方法。你可以在这里提到差异。对错误进行重新编码,因为所有这些代码都是异步运行的,所以它甚至在准备就绪之前就获取了
this.state.currentData[“condition”][“text”]
。所以用这个代替它
this.state.currentData&&this.state.currentData[“条件”]&&this.state.currentData[“条件”][“文本”]
。因此,它仅在值可用时才使用该值。另外,请对答案显示一些向上的投票。它说undefined不是一个对象(评估'this.state.dataSourceCurrent['temp_f'])我尝试了你的代码,但它的工作原理与上述注释中的&&的逻辑不同。没关系,我找到了它。非常感谢你,你的代码帮了很多忙
<TextInput placeholder="eg. New York" onChange={(val)=>this.apiCALL(val)}/>
apiCALL(city){
  return fetch(
    `http://api.weatherapi.com/v1/current.json?key=???&q=${city}`//I took out the key on purpose.
  )
    .then((response) => response.json())
    .then((responseJson) => {
      this.setState({
        isLoading: false,
        locationData: responseJson.location,
        currentData: responseJson.current,
      });
    })
    .catch((error) => {
      console.log(error);
    });
}