Помогите разобраться. Задавал похожий вопрос тут. Его закрыли, как дубликат этого. Я попробовал решение из того вопроса - объявил глобальную переменную и в функции присвоил ей значение, переданное из бекенда, но получил ошибку 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. Объясните, пожалуйста, что делаю неправильно.
undefined- посмотри исходный вопрос про получение значения из асинхронной функции. Там есть пример – Grundy Aug 30 '23 at 08:31