Как правильно сказал @charlietfl, случайные цены должны генерироваться именно там, где для массива books
устанавливается состояние.
Сначала я сделал вашу вспомогательную функцию методом класса:
getRandomPrices = (min, max) => {
return Number((Math.random() * (max - min) + min).toFixed(2));
};
Затем я создал то же самое, сгенерировал случайный price
и сопоставил новый измененный массив книг, который содержит ваш ответ и случайную цену:
onTermSubmit = (term) => {
axios
.get(`https://www.googleapis.com/books/v1/volumes?q=${term}${KEY}`)
.then((res) => {
let books = res.data.items;
books = books.map((bookObj) => ({
...bookObj,
price: this.getRandomPrices(2, 25)
}));
this.setState({ books });
})
.catch((error) => {
console.log(error);
});
};
И удалил весь избыточный код из render
:
render() {
// const { books } = this.state;
// const someArr = [];
// let bookPrice = '';
// // for each book
// books.forEach((book) => {
// // get random price
// bookPrice = getRandomPrices(2, 25);
// // and assign it as a book price
// someArr.push(bookPrice);
// });
return (