0

Помогите разобраться. Задавал похожий вопрос тут. Его закрыли, как дубликат этого. Я попробовал решение из того вопроса - объявил глобальную переменную и в функции присвоил ей значение, переданное из бекенда, но получил ошибку too many re-rerndes при попытке обновить состаяние. Поэтому решил воспользоваться решением из этого вопроса. А именно, перенес код с запросом в отдельную функцию, вызвал ее в handleLoad и попытался присвоить переменной значение из функции. Вот код:

let result_prices = []

async function getprices_from_server (prices) {

let data = prices
data = JSON.stringify(data)
const json_data = {"year_prices": data}


axios.post("http://localhost:5000/getprices/", json_data).then(response => {
    // returning the data here allows the caller to get it through another .then(...)

    const full_prices = response.data
    return full_prices 
})

} }

const handleLoad = async () => { result_prices = await getprices_from_server([10, 20, 10, 20, 10, 20])

console.log(result_prices)

}

export default function Buy() { useEffect(() => { window.addEventListener("load", handleLoad); return () => { window.removeEventListener("load", handleLoad); }; });

const [prices, setPrices] = useState([])

Но в консоль выводится undefined, а при попытке вызвать setPrices(result_prices) Получаю ту же ошибку too many re-renders. Объясните, пожалуйста, что делаю неправильно.

  • функция getprices_from_server ничего не возвращает поэтому и получаешь undefined - посмотри исходный вопрос про получение значения из асинхронной функции. Там есть пример – Grundy Aug 30 '23 at 08:31

0 Answers0