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

Рендер только новых элементов при добавлении их в массив?

При реализации инфинити скролла, с сервера подгружаются новые товары, и вопрос в том, как отменить ререндер тех компонентов, которые уже были в массиве, и рендерить только новые добавленные элементы
Дело в том что если из массива отрисовываются простые компоненты, то это не трудно и быстро, но если рисуются карточки товара которых уже 300 штук и при добавлении новых 20 в массив перерисовываются ещё и старые 300.
Песочница для примера https://codesandbox.io/s/sad-khayyam-lskxj?file=/s...
  • Вопрос задан
  • 333 просмотра
Подписаться 1 Средний 6 комментариев
Помогут разобраться в теме Все курсы
  • Нетология
    Frontend-разработка на React
    10 недель
    Далее
  • ProductStar
    Разработка на React
    6 недель
    Далее
  • Яндекс Практикум
    React-разработчик
    3 месяца
    Далее
Решения вопроса 1
Krasnodar_etc
@Krasnodar_etc
fundraiseup
Вы же слышали про shouldComponentUpdate ?) Просто добавьте его к вашим item-компонентам
Или React.memo для функциональных компонентов

Но вообще, если у вас компоненты в цикле выводятся, а не просто div-блоки, то при тех же пропсах ререндера не будет. Просто это не в map нужно в консоли проверять, а внутри самого компонента-item. map в любом случае обязан перебрать все элементы
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
0xD34F
@0xD34F Куратор тега React
key={elem * Math.random()}

при добавлении новых 20 в массив перерисовываются ещё и старые 300

нет слов
5ce68e39b7718977335131.jpeg
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы
от 250 000 до 300 000 ₽
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
ITK academy Екатеринбург
от 50 000 до 90 000 ₽