Я пытаюсь, чтобы консоль записывала данные о вводе города и страны в текстовый вход с реагирующим родом с помощью API Open Weather Maps.Всякий раз, когда я вписываю в поле город и страну, я получаю «нет города 404».Однако, если я жестко закодирую строку, в которой находится строка для const city и const country, я получу желаемую прибыль.Я не уверен, что я делаю неправильно.Я пробовал несколько разных методов и гуглил, пока мои глаза не покраснели, но я застрял.Я знаю API, и все работает, потому что я могу жестко кодировать вещи.Это что-то в моей форме. JS - это то, что я спекулирую.
Любая помощь приветствуется.Заранее спасибо!
Это мой файл App.js
//import a library to help create a component
import React, { Component } from 'react';
import { View, AppRegistry } from 'react-native';
//import components
import Header from './src/components/Header';
import Form from './src/components/Form';
import Weather from './src/components/Weather';
//API KEY from Open Weather Maps
const API_KEY = 'cad2d6dddccc9804f43e7c3af9e56f52';
const city = '';
const country = '';
export default class App extends Component {
getWeather = async (e) => {
e.preventDefault();
const api_call = await
fetch(`https://api.openweathermap.org/data/2.5/weather?
q=${city},${country}&appid=${API_KEY}&units=metric`);
const data = await api_call.json();
console.log(data);
}
render() {
return (
<View >
<Header headerText='Weather Fetcher' />
<Form
getWeather={this.getWeather}
city={this.city}
country={this.country}
/>
<Weather />
</View>
);
}
}
Это мой файл Form.js.
import React, { Component } from 'react';
import { TextInput, View, StyleSheet, Text, TouchableOpacity } from
'react-native';
export default class Form extends Component {
render() {
return (
<View style={styles.viewPut}>
<Text style={styles.textStyle}>City</Text>
<TextInput
style={styles.textInput}
value={this.city}
/>
<Text style={styles.textStyle}>Country</Text>
<TextInput
style={styles.textInput}
value={this.country}
/>
<TouchableOpacity
onPress={this.props.getWeather}
>
<Text> Fetch My Weather </Text>
</TouchableOpacity>
</View>
);
}
}
Приложение, которое я делаю