Я хотел бы отображать данные, полученные из api, с помощью методов жизненного цикла. Мне удается получить данные (объект) и заполнить мои данные в состоянии (массиве). Но я не могу отобразить значения в возвращаемой части.
Первая часть кода, которая кажется работающей, для удобства чтения я удалил часть ошибки / загрузки:
class App extends Component {
constructor(props) {
super(props);
this.state = {
data: [], //putting data in the state
};
}
async componentDidMount() {
fetch("https://covid19.mathdro.id/api")
.then((response) => response.json())
.then(
(data) => {
this.setState({
confirmed: data.confirmed, //populate data in this.state
recovered: data.recovered,
deaths: data.deaths,
});
}
);
}
render() {
const { confirmed, recovered, deaths } = this.state;
console.log(confirmed, recovered, deaths);
...
}
export default App;
Вот первая попытка возврата:
return ( <div> {(confirmed, recovered, deaths)} </div>);
Я получил
Ошибка: объекты недопустимы как дочерние объекты React (найдено: объект с ключами {значение, деталь}). Если вы хотели отобразить коллекцию дочерних элементов, используйте вместо этого массив.
Console.log
действительно возвращает объекты:
Объект {значение: 42280709, деталь: https://covid19.mathdro.id/api/confirmed} Объект {значение: 28591681, деталь: https://covid19.mathdro.id/api/recovered} Объект {значение: 1145557, деталь: https://covid19.mathdro.id/api/deaths}
Кстати, console.log(confirmed.value)
ничего не возвращает, почему?
Поэтому я решил использовать Array.prototype.map()
:
return (
<div>
{this.state.confirmed.map(i => (<div>{i.value}</div>))}
</div>);
И теперь я получил
TypeError: подтверждено не определено
Я не понимаю эту ошибку, как console.log(confirmed)
что-то может вернуть, если оно не определено?
Другие пути, которые я изучал: использование JSON.parse
, добавление ключа на карту, удаление {}, ..
Я ответил на несколько вопросов о stackoverflow, но до сих пор не понимаю, что изменить: React render: объекты недействительны в качестве дочерних React Объекты недопустимы как дочерние объекты React. Если вы хотели отобразить коллекцию дочерних элементов, используйте вместо этого массив
Какие-нибудь подсказки? Спасибо !