Почему бы в useMemo не использовать цикл? Скорее всего можно, если они будут беспеременно вызываться, но таких кейсов я не встречал
только если количество итераций неизменное но вообще зачем?
мм, не уверен зачем) Есть древовидная структура, раскрывающиеся списки. Данные для рендера хранятся в одном объекте, с вложеностями. Можно ли сделать так, чтобы рендерилась только та часть списка, на которую пользователь нажал, что бы открыть, а все остальное(остальные элементы, в т.ч уже открытые) оставалось в таком же виде, и не перерендеривалось??
да, тут useMemo поможет
нуу, сомнительно.. я не придумал как useMemo может тут помочь
только разбивать данные для рендера на отдельные куски, настраивать ключи
весь список рендерится с помощью одного компонента(компонент-элемент списка), вызываемого рекурсивно. В него приходит объект с данными, и на их основе всё рисуется. Когда пользователь раскрывает какой-то элемент списка, объект обновляется, и происходит перерисовка. С учетом этого, как то сложно представить как разбивать на куски)
состояние компонента перенести в localState
хммм, оооочень интересная мысль) надо будет попробовать. Спасибо большое
Оберни в React.memo это должно решить проблему, т.к хоть компонент и один но экземпляров этого компонента много, в каждый приходит своя часть данных, и перерендерятся только компоненты вдоль изменившейся ветки
Хммм) Интересно.. Спасибо большое, попробую
Пробовал.. по идее это ж не должно срабатывать, поскольку раз это рекурсия, то что бы программа дошла до какого-то из дочерних экземпляров, верхние экземпляры должны перерисоваться, а если у верхних пропсы не изменятся, то и рекурсия дальше не пойдет и не дойдет до нужных экземпляров, у которых изменились пропсы.. Я это так понимаю
Пропсы нужно менять вдоль ветки на листьях которой поиенялось
Вообще тут нужен стейт менеджер (redux, mobx и т.д.) тогда можно будет точечно рендерить только изменившийся элемент
там выше предложили использовать локальный стейт, я еще не думал подробно над этой идеей, но возможно поможет
Если этот стейт за пределами компонента не нужен, то локальный стейт это хорошее решение
Но в React.memo все равно нужно обернуть, иначе все дети изменившегося родителя перерендерятся
а, точно... спасибо
Обсуждают сегодня