Я довольно новичок в React. Я получаю данные из API и вижу данные, когда проверяю журнал консоли. Однако я не могу понять, как я могу использовать map() для создания нового массива, который элементы option могут затем использовать для отображения кодов валюты.
В настоящее время он заполняет раскрывающийся список, но все элементы параметров пусты, а результаты отображаются как NaN.
Ниже приведен пример моего кода, в котором я извлекаю данные.
state = {
currencies: [],
base: "USD", //default value
amount: "",
convertTo: "EUR",
result: ""
};
componentDidMount() {
fetch("https://api.exchangeratesapi.io/latest")
.then(response => {
return response.json();
})
.then(data => {
let currenciesFromApi = Object.keys(data.rates);
console.info(currenciesFromApi);
this.setState({
currencies: currenciesFromApi
});
})
.catch(error => {
console.info(error);
});
}
Ожидаемые результаты: раскрывающийся список будет заполнен кодами валют из API (например, GBP, EUR, USD) и значениями для отображения курсов, а не NaN.
Фактические результаты: выпадающие списки пусты, и выбор любого из них также возвращает Нэн.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я проверил исходный код, и кажется, что массив валют содержит только строковые значения. Поэтому, когда вы сопоставляете их для отображения параметров, просто используйте переменную непосредственно как строку.
{this.state.currencies.map(currency => (
<option key = {currency} value = {currency}>
{currency}
</option>
))}
См.: https://codesandbox.io/s/hu8cb
Возможно, вы можете разделить вызов выборки на функцию внутри другого файла, чтобы ее можно было использовать повторно. Также, возможно, вы можете изучить реагирующие хуки вместо использования компонента класса. См.: robinwieruch.de/react-hooks-fetch-data
Понятно, глупая ошибка, но полезно знать в следующий раз. Есть ли что-нибудь, что я мог бы сделать лучше, когда я получил данные?