Reactjs 在reactnative中每个textinput获取多次
因此,基本上,我正在react native中构建一个天气应用程序,并将weatherAPI用于天气API。我的问题是:假设我搜索了纽约的天气,它给了我80华氏度,我搜索了达拉斯的天气,但它给了我与纽约天气相同的细节 我知道我的API被调用了一次,但如何根据textinput的更改多次调用API? 代码如下: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
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);
});
}