Задать вопрос
@Vadim1899

Как можно оптимизировать вычисления в компоненте react?

Привет! Есть проект на react+redux, на хуках
Стор выглядит примерно так:
{
     items: [...],  // массив объектов с товарами, по типу { id: 1, title: 'hello', price: 100 }
     activeItemId: 1, // ID выбранного итема из массива items
}


В компоненте товара получаю инфу о нем таким образом:
const activeItemId  = useSelector((state) => state.activeItemId);
const items  = useSelector((state) => state.items);

const activeItem = items.find((item) => item.id === activeItemId);


Но как я понимаю, последняя строка будет выполняться при каждом перерендере компонента, что в общем то не нужно. Как можно закешировать (?) activeItem, чтобы find не выполнялся при каждом пере-рендере?
  • Вопрос задан
  • 53 просмотра
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Frontend-разработка на React
    10 недель
    Далее
  • Академия Эдюсон
    React-разработчик + ИИ
    2 месяца
    Далее
  • Яндекс Практикум
    React-разработчик
    3 месяца
    Далее
Решения вопроса 1
Alexandroppolus
@Alexandroppolus
кодир
Обычно items делается в виде объекта, и тогда activeItem = items[activeItemId], это выполняется очень быстро.
Но если надо именно массив, то можно сделать так:
const activeItem = useMemo(() => items.find((item) => item.id === activeItemId), [items, activeItemId]);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы