Я получаю полезную нагрузку через axios, которая является объектом.Внутри этого объекта есть массив с именем "location". Для каждого индекса в массиве есть объект со свойствами.Я пытаюсь перебрать этот объект, установив состояние, и перепробовал много перестановок, но, похоже, не могу его получить.
Вот структура возвращаемых данных из вызова API axios, разбитого на страницы, которые ядумаю, затуманивает мой noggin способ доступа к нему.
{status: "success", data: {…}}
data:
locations: Array(311)
[0 … 99]
[100 … 199]
[200 … 299]
[300 … 310]
length: 311
__proto__: Array(0)
__proto__: Object
Если я расширяюсь в Chrome Tools, я вижу это:
[0 … 99]
0:
deviceId: 471
lat: 37.77335
lon: -122.3863333
spotterId: "SPOT-300434063282100"
timestamp: "2019-06-10T19:35:01.000Z"
__proto__: Object
1:
deviceId: 444
lat: 37.77345
lon: -122.38695
spotterId: "SPOT-0319"
timestamp: "2019-06-10T05:07:31.000Z"
__proto__: Object
Итак, вы можете расширить [0 ...99] записей, затем [100-199] и так далее ...
Я попробовал следующий код для вызова и повторения в реакции:
state = {
locations: []
};
async componentDidMount() {
try {
const response = await axios({
method: 'get',
url: `my API url`,
headers: {
'token': token
}
})
.then(res => {
const locations = res.data;
console.log(locations);
this.setState({ locations });
});
} catch (e) {
console.log(e);
return;
}
}
Я вернул данные в порядке, но перебирая это просто распечатать каждый из атрибутов .... это другое дело.Я попробовал это ниже.не работаетПросто коварная карта не является ошибкой функции.Я не думаю, что я получаю доступ к данным через правильный индекс или неправильно помещаю их в состояние.
render() {
const { locations } = this.state;
return (
<div>
<ul>
{locations.map(location => (
<li key={location.deviceId}>
{location.deviceId}
{location.lat}
{location.lon}
{location.spotterId}
{location.timestamp}
</li>
))}
</ul>
</div>
);
}
Ожидаемый результат - я хочу отобразить на экране каждый объект и его свойства в массиве.