danielchistyakov
@danielchistyakov
Frontend Engineer

Почему не выполняется рендеринг после обновления данных?

Почему данные, которые выводятся в console.log двумя строками ниже не выводятся в вёрстке?
Или возможно это сделать как-то более оптимизированно и лаконично?
Ссылка на CodeSandbox
  • Вопрос задан
  • 163 просмотра
Решения вопроса 3
@ReactLover
Смысла повторяться не вижу, потому что другие уже указали на ваши ошибки. Переписать можно так. И плодить кучу соединений не стоит, достаточно одного. И не забывай отписываться.
Ответ написан
Потому что кусок
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) и в ивент листенерах меняй стейт
Ответ написан
0xD34F
@0xD34F Куратор тега React
setData(result);

Значение result здесь всегда одно и то же, а если значение не изменилось - компонент не будет заново отрендерен.
Можно по-быстрому заставить работать так, как вы хотите, передавая копию объекта: setData({ ...result });.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
22 нояб. 2024, в 00:55
500 руб./за проект
21 нояб. 2024, в 23:30
300000 руб./за проект
21 нояб. 2024, в 22:21
3000 руб./в час