У вас есть функция asyn c (setData), которая возвращает обещание, и чтобы получить значение этой функции asyn c, вам нужно выполнить метод .then (). Итак, что-то вроде этого в вашем componentDidMount
componentDidMount() {
this.setData()
.then((res) => {
this.setState({
dog: res,
});
})
.catch((error) => console.log(error));
}
Или сделайте свой componentDidMount asyn c функцией и дождитесь результатов setData.
async componentDidMount() {
try {
const dogList = await this.setData();
this.setState({
dog: dogList,
});
} catch (error) {
console.log(error);
}
}
В вашем вопросе вы указали, что хотел первые 10 фотографий, поэтому ваш setData должен иметь такую проверку, поскольку ваш l oop начинается с индекса 0.
setData = async () => {
const x = await fetch("https://dog.ceo/api/breed/hound/images");
const y = await x.json();
const z = await y.message;
let newArr = [];
for (let i = 0; i < z.length; i++) {
if (i <= 9) {
newArr.push(z[i]);
}
}
return newArr;
};
Пожалуйста, не забудьте добавить ключевую опору на вашу карту в функции рендеринга.