Потому что кусок
var result = {};
result.price = {};
result.price.buy = {};
result.price.sell = {};
arr.map((res, key) => {
result.price.buy[res] = {};
result.price.buy[res].price = "Загрузка...";
});
arr.map((res, key) => {
result.price.sell[res] = {};
result.price.sell[res].price = "Загрузка...";
});
У тебя выполняется на каждый вызов функции
У функциональных компонентов нет метода рендер, сама функция выполняется каждый раз когда у тебя поменялся стейт или пропсы.
Вынеси result в стейт (useState) и в ивент листенерах меняй стейт